TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。

TinyDB的目标是降低小型 Python 应用程序使用数据库的难度,对于一些简单程序而言与其用 SQL 数据库,不如就用TinyDB, 因为它有如下特点:

轻便:当前源代码有 1800 行代码(大约 40% 的文档)和 1600 行测试代码。

可随意迁移:在当前文件夹下生成数据库文件,不需要任何服务,可以随意迁移。

简单:TinyDB 通过提供简单干净的 API 使得用户易于使用。

用纯 Python 编写:TinyDB 既不需要外部服务器,也不需要任何来自 PyPI 的依赖项。

适用于 Python 3.6+ 和 PyPy3:TinyDB 适用于所有现代版本的 Python 和 PyPy。

强大的可扩展性:您可以通过编写中间件修改存储的行为来轻松扩展 TinyDB。

100% 测试覆盖率:无需解释。

1.准备

开始之前,需要先安装它

pip install tinydb

2.简单的增删改查示例

初始化一个DB文件:

from tinydb import TinyDB
db = TinyDB(‘db.json’)

这样就在当前文件夹下生成了一个名为 db.json数据库文件。

往里面插入数据

from tinydb import TinyDB
db = TinyDB(‘db.json’)
db.insert({‘type’: ‘apple’, ‘count’: 7})
db.insert({‘type’: ‘peach’, ‘count’: 3})

可以看到,我们可以直接往数据库里插入字典数据,不需要任何处理。下面是批量插入的方法:

db.insert_multiple([
{‘name’: ‘John’, ‘age’: 22},
{‘name’: ‘John’, ‘age’: 37}])
db.insert_multiple({‘int’: 1, ‘value’: i} for i in range(2))

查询所有数据:

from tinydb import TinyDB
db = TinyDB(‘db.json’)
db.all# [{‘count’: 7, ‘type’: ‘apple’}, {‘count’: 3, ‘type’: ‘peach’}]

除了 .all 我们还可以使用for循环遍历db:

from tinydb import TinyDB
db = TinyDB(‘db.json’)
for item in db:
print(item)
#{‘count’: 7, ‘type’: ‘apple’}
#{‘count’: 3, ‘type’: ‘peach’}

如果你需要搜索特定数据,可以使用Query:

from tinydb import TinyDB
db = TinyDB(‘db.json’)
Fruit = Querydb.search(Fruit.type == ‘peach’)
#[{‘count’: 3, ‘type’: ‘peach’}]
db.search(Fruit.count > 5)
#[{‘count’: 7, ‘type’: ‘apple’}]

更新数据:

from tinydb import TinyDB
db = TinyDB(‘db.json’)
db.update({‘foo’: ‘bar’})
#删除某个Keyfrom tinydb.operations import delete
db.update(delete(‘key1’), User.name == ‘John’)

删除数据:

删除数据也可以使用类似的条件语句:

from tinydb import TinyDB
db = TinyDB(‘db.json’)
db.remove(Fruit.count < 5)
db.all# [{‘count’: 10, ‘type’: ‘apple’}]

清空整个数据库

from tinydb import TinyDB
db = TinyDB(‘db.json’)
db.truncatedb.all#

3.高级查询

除了点操作符访问数据,你还可以用原生的dict访问表示法:

#写法1
db.search(User.country-code == ‘foo’)
#写法2
db.search(User[‘country-code’] == ‘foo’)

这两种写法是等效的。

另外在常见的查询运算符(==, <, >, …)之外,TinyDB还支持where语句:

from tinydb import where
db.search(where(‘field’) == ‘value’)

这等同于:

db.search(Query[‘field’] == ‘value’)

这种语法还能访问嵌套字段:

db.search(where(‘birthday’).year == 1900)
#或者db.search(where(‘birthday’)[‘year’] == 1900)

Any 查询方法:

db.search(Group.permissions.any(Permission.type == ‘read’))
#[{‘name’: ‘user’, ‘permissions’: [{‘type’: ‘read’}]},
#{‘name’: ‘sudo’, ‘permissions’: [{‘type’: ‘read’}, {‘type’: ‘sudo’}]},
#{‘name’: ‘admin’, ‘permissions’:
#[{‘type’: ‘read’}, {‘type’: ‘write’}, {‘type’: ‘sudo’}]}]

检查单个项目是否包含在列表中:

db.search(User.name.one_of([‘jane’, ‘john’]))

TinyDB还支持和Pandas类似的逻辑操作:

#Negate a query:
db.search(~ (User.name == ‘John’))
#Logical AND:db.search((User.name == ‘John’) & (User.age <= 30))
#Logical OR:db.search((User.name == ‘John’) | (User.name == ‘Bob’))

TinyDB的介绍就到这里,你还可以访问他们的官方文档,查看更多的使用方法:

https://tinydb.readthedocs.io/en/latest/usage.html

尤其是想基于TinyDB做些存储优化的同学,你们可以详细阅读 Storage & Middleware 章节。

-END-


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击

👉Python学习大礼包👈

在这里插入图片描述

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python书籍和视频合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

👉Python面试刷题👈

👉Python副业兼职路线👈

在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取保证100%免费

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐