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