对象数据库

你好,我是洁洁。写程序的时候,我经常需要在本地保存数据,比如配置文件或者中间过程数据。如果通过,我会选择json,pickle或者sqlite。但是都有点不方便。

例如,json和pickle需要序列化并保存到一个文件中,然后在读取时反序列化为Python对象。通常不清楚是加载还是转储,加载还是转储,需要检查文档。Sqlite虽然是一个文件数据库,但在复杂性上与大型数据库MySQL相似。

今天我要分享的是这些专门为Python打造的轻量级数据库,用起来真的很简单,写代码也没有内存负担。

Shelve

如果Python中的字典存储在内存中,那么标准库shelve[1]就像是存储在文件中的字典,它的值可以是pickle模块可以处理的任何Python对象,包括大部分分类实例、递归数据类型以及有大量共享子对象的对象,它的键是普通字符串。

用法:shelve.open(filename,flag = & # 39c & # 39,协议=无,写回=假)

示例代码如下,您可以阅读注释:

import shelve # write db = shelve . open(& # 34;商店& # 34;)db[& # 34;数据& # 34;] = {"姓名& # 34;: "Python VII & # 34, "作者& # 34;: "萨默茨& # 34;}db.close()#会生成文件store.db#建议用shelf . open(& # 34;商店& # 34;)作为db:db[& # 34;数据& # 34;] = {"姓名& # 34;: "Python VII & # 34, "作者& # 34;: "萨默茨& # 34;} #用shelve . open(& # 34;商店& # 34;)作为db:print(db[& # 34;数据& # 34;])# out { & # 39;姓名& # 39;: 'Python VII & # 39, '作者& # 39;: 'somenzz & # 39} PickledPickledB [2]是一个轻量级的简单的键值对存储。它建立在Python的simplejson模块之上,并受到redis的启发。可以通过pip install pickledb安装。

如何使用:

& gt& gt& gt导入pickledb & gt& gt& gtdb = pickledb . load(& # 39;example.db & # 39,auto _ dump = False)& gt;& gt& gtdb . set(& # 39;姓名& # 39;, 'Python VII & # 39)True & gt& gt& gtdb . get(& # 39;姓名& # 39;)'Python VII & # 39& gt& gt& gtDb.dump()TrueTinyDB类似于pickleDB和Shelve,TinyDB是另一种快速轻量的键值对存储。TinyDB[3]的优点是速度非常快,使用起来非常简单。TinyDB的接口类似于许多键值存储,但是它提供了许多额外的功能,比如编写自己的存储中间件的能力。

用法:

import tinydbdb = tinydb。tiny db(& # 34;store.json & # 34)db . insert({ & # 34;姓名& # 34;: "Python VII & # 34})db . insert({ & # 34;作者& # 34;: "萨默茨& # 34;})results = db.all()print(结果)# output[{ & # 39;姓名& # 39;: 'Python VII & # 39}, {'作者& # 39;: 'somenzz & # 39}]也可以这样用:

& gt& gt& gt从tinydb导入TinyDB,查询& gt& gt& gtdb = tiny db(& # 39;path/to/db . JSON & # 39;)& gt& gt& gtuser = Query()& gt;& gt& gtdb . insert({ & # 39;姓名& # 39;: 'Python VII & # 39, '作者& # 39;: 'somenzz & # 39})& gt;& gt& gtdb . search(user . name = = & # 39;Python VII & # 39)[{'姓名& # 39;: 'Python VII & # 39, '作者& # 39;: 'somenzz & # 39}]方便吗?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论