在写程序的时候经常会需要将数据保存到本地,比如是配置文件,或者是中间过程数据,通过情况下我会选择 json、pickle 或者 sqlite。但是他们都有点不大方便。
比如 json 和 pickle,需要先序列化保存到文件,读的时候再反序列化成 Python 对象。往往搞不清楚是 load 还是 dump,是 loads 还是 dumps,需要查下文档。而 sqlite,虽然是文件数据库,但用起来和大的数据库 MySQL 的复杂度也差不多。
今天分享一下这些专门为 Python 打造的轻量级数据库,使用起来真的简单到爆,写代码时没有记忆负担。
Shelve
如果说 Python 中的字典(dict)是保存在内存中的,那么标准库 shelve就像是保存在文件中的字典,它的值可以为为任意 pickle 模块能够处理的 Python 对象,这包括大部分类实例、递归数据类型,以及包含大量共享子对象的对象,它的键则为普通的字符串。
使用方法:shelve.open(filename, flag='c', protocol=None, writeback=False)
示例代码如下,可以看下注释:
import shelve # 写入 db = shelve.open("store") db["data"] = {"name": "Python七号", "author": "somenzz"} db.close() # 会生成文件 store.db # 推荐这种写法 with shelve.open("store") as db: db["data"] = {"name": "Python编程学习圈", "author": "somenzz"} #读取 with shelve.open("store") as db: print(db["data"]) #out {'name': 'Python编程学习圈', 'author': 'somenzz'}
pickleDB
pickleDB是一个轻量级且简单的键值对存储。它建立在 Python 的 simplejson 模块之上,并受到 redis 的启发。可以通过 pip install pickledb 进行安装。
使用方法:
>>> import pickledb >>> db = pickledb.load('example.db', auto_dump = False) >>> db.set('name', 'Python编程学习圈') True >>> db.get('name') 'Python编程学习圈' >>> db.dump() True
TinyDB
与 pickleDB 和 Shelve 类似,TinyDB 是另一种快速且轻量级的键值对存储。TinyDB的优点是非常快,非常简单易用。TinyDB 的接口类似于许多键值存储,但提供了许多附加功能,例如编写自己的存储中间件能力。
用法:
import tinydb db = tinydb.TinyDB("store.json") db.insert({"name": "Python编程学习圈"}) db.insert({"author": "somenzz"}) results = db.all() print(results) # output [{'name': 'Python编程学习圈'}, {'author': 'somenzz'}]
还可以这样用:
>>> from tinydb import TinyDB, Query >>> db = TinyDB('path/to/db.json') >>> User = Query() >>> db.insert({'name': 'Python编程学习圈', 'author': 'somenzz'}) >>> db.search(User.name == 'Python编程学习圈') [{'name': 'Python编程学习圈', 'author': 'somenzz'}]
是不是很方便?想要了解更多关于Python教程欢迎持续关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/9838/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料