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集成到更大的应用程序中,或结合其他库以实现更复杂的用例。