TinyDB – NoSQL数据库:Python轻量级文档数据库指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

TinyDB完全指南:Python轻量级NoSQL数据库

简介

现代应用并非总是需要强大复杂的数据库系统。当项目不需要高扩展性或处理海量数据时,一个轻量级的内置数据库就足够了。TinyDB是一款完全用Python编写的NoSQL数据库,为存储结构化数据提供了便捷简单的解决方案,无需使用SQL。

TinyDB将数据保存为JSON格式,无需安装服务器。这使得它非常适合脚本、小型CLI工具、桌面应用、原型开发以及教学项目。该库仅有几KB大小,依赖极少,是轻量级解决方案的理想选择。

安装与基本配置

安装TinyDB

通过pip一行命令即可安装TinyDB:

pip install tinydb

如需使用额外功能,可安装扩展:

pip install tinydb[compression]  # 数据压缩
pip install tinydb[yaml]         # 支持YAML格式

创建数据库

创建保存到文件的数据库:

from tinydb import TinyDB
db = TinyDB('db.json')  # 文件会自动创建

创建内存数据库:

from tinydb.storages import MemoryStorage
db = TinyDB(storage=MemoryStorage)

编码与参数配置

from tinydb import TinyDB
from tinydb.storages import JSONStorage

# 设置编码
db = TinyDB('db.json', encoding='utf-8')

# 设置JSON缩进以增强可读性
db = TinyDB('db.json', indent=4, separators=(',', ': '))

TinyDB数据结构基础

TinyDB采用文档型数据模型:

  • 数据以文档列表形式存储(Python字典)
  • 每个文档拥有自动生成的唯一doc_id
  • 支持的数据类型:字符串、数字、列表、字典、布尔值和null
  • 同一表中文档结构可以不同
  • 支持任意深度的数据嵌套

基本数据操作

插入数据

插入单个文档:

from tinydb import TinyDB
db = TinyDB('db.json')

# 简单插入
db.insert({'name': '张三', 'age': 30, 'city': '北京'})

# 插入并获取ID
doc_id = db.insert({'name': '李四', 'age': 25})
print(f"文档已添加,ID为:{doc_id}")

批量插入:

users = [
    {'name': '王芳', 'age': 25, 'profession': '设计师'},
    {'name': '赵强', 'age': 40, 'profession': '程序员'},
    {'name': '刘丽', 'age': 28, 'profession': '经理'}
]

doc_ids = db.insert_multiple(users)
print(f"已添加文档数:{len(doc_ids)}")

读取数据

获取所有文档:

all_users = db.all()
print(f"用户总数:{len(all_users)}")

按ID获取文档:

user = db.get(doc_id=1)
if user:
    print(f"找到用户:{user['name']}")

搜索与过滤

使用Query进行基本搜索:

from tinydb import Query
User = Query()

# 精确匹配搜索
users = db.search(User.name == '张三')

# 条件搜索
adults = db.search(User.age >= 30)

# 获取第一个匹配项
user = db.get(User.name == '李四')

复杂搜索条件:

# 逻辑与
young_designers = db.se                    

推荐