世界简讯:TinyDB 一个纯Python编写的轻量级数据库
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.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南进行安装。
(可选1)如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2)此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖:1. Windows 环境 打开 Cmd (开始-运行-CMD)。2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip installtinydb
2.简单的增删改查示例
初始化一个DB文件:
fromtinydb importTinyDBdb = TinyDB("db.json")
这样就在当前文件夹下生成了一个名为 `db.json` 的数据库文件。
往里面插入数据:
fromtinydb importTinyDBdb = 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} fori inrange(2))
查询所有数据:
fromtinydb importTinyDBdb = TinyDB("db.json")db.all()# [{"count": 7, "type": "apple"}, {"count": 3, "type": "peach"}]
除了 .all() 我们还可以使用for循环遍历db:
fromtinydb importTinyDBdb = TinyDB("db.json")foritem indb:print(item)# {"count": 7, "type": "apple"}# {"count": 3, "type": "peach"}
如果你需要搜索特定数据,可以使用Query():
fromtinydb importTinyDBdb = TinyDB("db.json")Fruit = Query()db.search(Fruit.type == "peach")# [{"count": 3, "type": "peach"}]db.search(Fruit.count > 5)# [{"count": 7, "type": "apple"}]
更新数据:
fromtinydb importTinyDBdb = TinyDB("db.json")db.update({"foo": "bar"})# 删除某个Keyfromtinydb.operations importdeletedb.update(delete("key1"), User.name == "John")
删除数据:
删除数据也可以使用类似的条件语句:
fromtinydb importTinyDBdb = TinyDB("db.json")db.remove(Fruit.count < 5)db.all()# [{"count": 10, "type": "apple"}]
清空整个数据库:
fromtinydb importTinyDBdb = TinyDB("db.json")db.truncate()db.all()# []
3.高级查询
除了点操作符访问数据,你还可以用原生的dict访问表示法:
# 写法1db.search(User.country-code == "foo")# 写法2db.search(User["country-code"] == "foo")
这两种写法是等效的。
另外在常见的查询运算符(==, <, >, ...)之外,TinyDB还支持where语句:
fromtinydb importwheredb.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 章节。
我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
点击下方阅读原文可获得更好的阅读体验
Python实用宝典(pythondict.com)不只是一个宝典欢迎关注公众号:Python实用宝典
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...