迅闻网
让更多人看到你

TinyDB 一个纯Python编写的轻量级数据库

TinyDB是一个纯Python编写的轻量级数据库,一共只有1800行代码,没有外部依靠项。
TinyDB的目标是降低小型Python应用程序运用数据库的难度,对于一些简略程序而言与其用SQL数据库,不如就用TinyDB,因为它有如下特色:
轻便:当前源代码有1800行代码(大约40%的文档)和1600行测验代码。
可随意搬迁:在当前文件夹下生成数据库文件,不需求任何服务,能够随意搬迁。
简略:TinyDB经过提供简略洁净的API使得用户易于运用。
用纯Python编写:TinyDB既不需求外部服务器,也不需求任何来自PyPI的依靠项。
适用于Python3.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.
pipinstalltinydb
2.简略的增修改查示例
初始化一个DB文件:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
这样就在当前文件夹下生成了一个名为`db.json`的数据库文件。
往里面刺进数据:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
db.insert({‘type’:’apple’,’count’:7})
db.insert({‘type’:’peach’,’count’:3})

 

Python
能够看到,咱们能够直接往数据库里刺进字典数据,不需求任何处理。下面是批量刺进的方法:
db.insert_multiple([
{‘name’:’John’,’age’:22},
{‘name’:’John’,’age’:37}])
db.insert_multiple({‘int’:1,’value’:i}foriinrange(2))
查询一切数据:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
db.all()
#[{‘count’:7,’type’:’apple’},{‘count’:3,’type’:’peach’}]
除了.all()咱们还能够运用for循环遍历db:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
foritemindb:
print(item)
#{‘count’:7,’type’:’apple’}
#{‘count’:3,’type’:’peach’}
假如你需求搜索特定数据,能够运用Query():
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
Fruit=Query()
db.search(Fruit.type==’peach’)
#[{‘count’:3,’type’:’peach’}]
db.search(Fruit.count>5)
#[{‘count’:7,’type’:’apple’}]
更新数据:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
db.update({‘foo’:’bar’})
#删去某个Key
fromtinydb.operationsimportdelete
db.update(delete(‘key1′),User.name==’John’)
删去数据:
删去数据也能够运用相似的条件语句:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
db.remove(Fruit.count<5)
db.all()
#[{‘count’:10,’type’:’apple’}]
清空整个数据库:
fromtinydbimportTinyDB
db=TinyDB(‘db.json’)
db.truncate()
db.all()
#[]
3.高级查询
除了点操作符拜访数据,你还能够用原生的dict拜访表明法:
#写法1
db.search(User.country-code==’foo’)
#写法2
db.search(User[‘country-code’]==’foo’)
这两种写法是等效的。
另外在常见的查询运算符(==,<,>,…)之外,TinyDB还支持where语句:
fromtinydbimportwhere
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相似的逻辑操作:
#Negateaquery:
db.search(~(User.name==’John’))
#LogicalAND:
db.search((User.name==’John’)&(User.age<=30))
#LogicalOR:
db.search((User.name==’John’)|(User.name==’Bob’))
TinyDB的介绍就到这儿,你还能够拜访他们的官方文档,检查更多的运用方法:
https://tinydb.readthedocs.io/en/latest/usage.html
尤其是想根据TinyDB做些存储优化的同学,你们能够具体阅读Storage&Middleware章节。
咱们的文章到此就结束啦,假如你喜欢今日的Python实战教程,请持续关注Python实用宝典。

未经允许不得转载:迅闻网 » TinyDB 一个纯Python编写的轻量级数据库
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

迅闻网-让更多人看到你

登录/注册返回首页