道教网站符咒法事网

破法符:TinyDB 一个纯Python编写的轻量级数据库

符法    道教网    2022-10-21    238

免费测运势 免费批八字:

免费测算批八字.jpg

师父微信: master8299


来自公众号: Python实用宝典

来自公众号: 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 importTinyDB

db = TinyDB( 'db.json')

这样就在当前文件夹下生成了一个名为 `db.json` 的数据库文件破法符

往里面 插入数据:

fromtinydb importTinyDB

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} fori inrange( 2))

查询所有数据:

fromtinydb importTinyDB

db = TinyDB( 'db.json')

db.all

# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]

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

fromtinydb importTinyDB

db = TinyDB( 'db.json')

foritem indb:

print(item)

# {'count': 7, 'type': 'apple'}

# {'count': 3, 'type': 'peach'}

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

fromtinydb importTinyDB

db = TinyDB( 'db.json')

Fruit = Query

db.search(Fruit.type == 'peach')

# [{'count': 3, 'type': 'peach'}]

db.search(Fruit.count 5)

# [{'count': 7, 'type': 'apple'}]

更新数据:

fromtinydb importTinyDB

db = TinyDB( 'db.json')

db.update({ 'foo': 'bar'})

# 删除某个Key

fromtinydb.operations importdelete

db.update( delete( 'key1'), User.name == 'John')

删除数据:

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

fromtinydb importTinyDB

db = TinyDB( 'db.json')

db.remove(Fruit.count 5)

db.all

# [{'count': 10, 'type': 'apple'}]

清空整个数据库:

fromtinydb importTinyDB

db = TinyDB( 'db.json')

db.truncate

db.all

3.高级查询

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

# 写法1

db.search(User.countrycode == 'foo')

# 写法2

db.search(User[ 'countrycode'] == 'foo')

这两种写法是等效的破法符

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

fromtinydb importwhere

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的介绍就到这里破法符,你还可以访问他们的官方文档,查看更多的使用方法:

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

我们的文章到此就结束啦破法符

EOF

推荐↓↓↓

本文链接:https://daojiaowz.com/index.php/post/69818.html

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源!

上一篇   下一篇

相关文章