TinyDB 是一个纯 Python 实现的 NoSQL 数据库,数据以 JSON 格式存储在文件中。
• 轻量级:TinyDB 的核心库非常小,适合嵌入式系统和小型应用。
• 灵活性:支持多种查询方式,可以根据需要自定义查询条件。
在使用 TinyDB 之前,需要先安装它。可以通过 pip 进行安装:
pip install tinydb
from tinydb import TinyDB
from tinydb import Query
# 创建一个数据库实例,数据将存储在 'db.json' 文件中
db = TinyDB('db.json')
# 插入一条数据
db.insert({'name':'Alice','age':30})
# 插入多条数据
db.insert_multiple([
{'name':'Bob','age':25},
{'name':'Charlie','age':35}
])
# 创建查询对象
User = Query()
# 查询年龄大于 30 的用户
result = db.search(User.age >30)
print(result)# 输出: [{'name': 'Charlie', 'age': 35}]
# 查询名字为 'Alice' 的用户
result = db.search(User.name =='Alice')
print(result) # 输出: [{'name': 'Alice', 'age': 30}]
# 更新 Alice 的年龄
db.update({'age': 31}, User.name == 'Alice')
# 查询更新后的数据
result = db.search(User.name == 'Alice')
print(result) # 输出: [{'name': 'Alice', 'age': 31}]
# 删除名字为 'Bob' 的用户
db.remove(User.name == 'Alice')
# 查询所有用户
result = db.all()
print(result) # 输出: [{'name': 'Alice', 'age': 31}, {'name': 'Charlie', 'age': 35}]
# 查询年龄大于 25 且名字不为 'Charlie' 的用户
result = db.search((User.age > 25) & (User.name != 'Alice'))
print(result) # 输出: [{'name': 'Alice', 'age': 31}]
# 关闭数据库连接
db.close()
以下是一些关于如何使用TinyDB的详细示例,涵盖了不同的使用场景:
1. 基本设置和插入数据
安装TinyDB
创建数据库并插入数据
from tinydb import TinyDB, Query # 初始化数据库(数据存储在JSON文件中) db = TinyDB('db.json') # 插入单个文档 db.insert({'name': 'John', 'age': 24, 'city': 'New York'}) # 插入多个文档 db.insert_multiple([ {'name': 'Anna', 'age': 22, 'city': 'Los Angeles'}, {'name': 'Mike', 'age': 32, 'city': 'Chicago'} ]) # 打印所有记录 print(db.all())2. 查询数据
User = Query() # 根据姓名查找用户 result = db.search(User.name == 'John') print(result)复杂查询
3. 更新数据
更新单个字段
# 更新特定用户的年龄 db.update({'age': 25}, User.name == 'John') # 验证更新 print(db.search(User.name == 'John'))更新多个字段
# 更新用户的多个字段 db.update({'age': 33, 'city': 'San Francisco'}, User.name == 'Mike') # 验证更新 print(db.search(User.name == 'Mike'))
删除特定记录
# 根据姓名删除用户 db.remove(User.name == 'Anna') # 验证删除 print(db.all())
# 删除所有用户 db.truncate() # 验证清空 print(db.all())5. 高级用法:使用多张表
使用多张表
6. 使用自定义存储
自定义存储示例
from tinydb.storages import MemoryStorage # 使用内存存储数据而不是JSON文件 db = TinyDB(storage=MemoryStorage) # 像往常一样插入和查询数据 db.insert({'name': 'Eve', 'age': 30}) print(db.all())
确保唯一条目
# 首先检查后插入唯一用户 if not db.contains(User.name == 'John'): db.insert({'name': 'John', 'age': 24, 'city': 'New York'}) # 这将不会插入重复项 db.insert_multiple([ {'name': 'John', 'age': 24, 'city': 'New York'}, # 不会被插入 {'name': 'Emma', 'age': 29, 'city': 'Boston'} # 将会被插入 ]) print(db.all())这些示例涵盖了使用TinyDB时可能遇到的各种常见场景。你可以基于这些示例进一步扩展,将TinyDB集成到更大的应用程序中,或结合其他库以实现更复杂的用例。
No comments yet.