你好,我是征哥,在写程序的时候经常会需要将数据保存到本地,比如是配置文件,或者是中间过程数据,通过情况下我会选择 json、pickle 或者 sqlite。但是他们都有点不大方便。

比如 json 和 pickle,需要先序列化保存到文件,读的时候再反序列化成 Python 对象。往往搞不清楚是 load 还是 dump,是 loads 还是 dumps,需要查下文档。而 sqlite,虽然是文件数据库,但用起来和大的数据库 MySQL 的复杂度也差不多。

今天分享一下这些专门为 Python 打造的轻量级数据库,使用起来真的简单到爆,写代码时没有记忆负担。

Shelve

如果说 Python 中的字典(dict)是保存在内存中的,那么标准库 shelve[1] 就像是保存在文件中的字典,它的值可以为为任意 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[2] 是一个轻量级且简单的键值对存储。它建立在 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[3] 的优点是非常快,非常简单易用。TinyDB 的接口类似于许多键值存储,但提供了许多附加功能,例如编写自己的存储中间件能力。

用法:

import tinydbdb = 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'}]

是不是很方便?

最后的话

本文分享了 3 个轻量级的 Python 文件型数据库,它们都非常简单易用,希望对你的编程有所帮助。独学而无友,则孤陋而寡闻,因此我组建了一个纯技术交流群,关注公众号「Python七号」回复「入群」加入技术交流群。

参考资料

[1]

shelve: https://docs.python.org/zh-cn/3/library/shelve.html

[2]

pickleDB: https://pythonhosted.org/pickleDB/

[3]

TinyDB: https://tinydb.readthedocs.io/en/latest/

最近发现的 3 个 Python 轻量级数据库,好用到爆!相关推荐

  1. Python操作数据库之 MySQL

    Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...

  2. python生成数据库指令_Python学习—数据库操作

    python2中操作数据库:MySQLdb python3中操作数据库:pymysql python接连数据库 1.创建数据库连接: mysql.connect()函数 2.执行数据库操作: 执行数据 ...

  3. python 操作数据库的常用SQL命令

    这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...

  4. 开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本

    开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本出了2个多月了,我一直没有给大家报道,这是目前唯一发现的用纯C#开发的稳定的轻量级数据库引擎,在我的建议下,已经支持Unicode,包 ...

  5. python 添加数据库表_通过时间表(Python库)简化复杂的计划

    python 添加数据库表 by Maxim Mamaev 马克西姆·马马耶夫(Maxim Mamaev) 通过时间表(Python库)简化复杂的计划 (Make your complex sched ...

  6. Python操作数据库完成接口测试

    前言 数据库的操作在测试工作中也是经常使用的,通过一些一些工具来操作数据库的方法大家都应该了解,那么Python操作数据库的大家了解吗? 今天测试君通过本篇文章介绍下如何通过Python来操作mysq ...

  7. python的数据库操作_Python对数据库操作

    Windows下安装MySQL-python linux下安装MySQL-python以连接MySQL: 解压后,进入目录下,执行python setup.py install 安装过程中,常会遇到的 ...

  8. 五、使用Python操作数据库

    (六)使用Python操作数据 程序运行时,数据是在内存中.当程序终止时,通常需将数据保存在磁盘上.为了便于程序保存和读取数据,并能直接通过条件快速查询到指定数据,数据库(Database)这种专门用 ...

  9. 使用python构建数据库_使用Python构建(半)自主无人机

    使用python构建数据库 They might not be delivering our mail (or our burritos) yet, but drones are now simple ...

最新文章

  1. 给手绘图着色(添加颜色或色彩):CVPR2020论文点评
  2. 图灵2月书讯:书籍,不可分离的生命伴侣
  3. 大学生学习c语言方法,针对在校大学生的C语言入门学习——函数
  4. nodejs基础学习-文件读取
  5. redis异步写入mysql_异步操作redis,mysql
  6. 解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)
  7. 什么是ioc(控制反转)什么是di(依赖注入)
  8. html拼接html内容,JavaScript如何避免拼接html字符串?
  9. php数组排序语言,php数组排序函数有哪些
  10. 团队作业4——第一次项目冲刺(Alpha版本)4.23
  11. quartus仿真34:74161构成长度为10的序列发生器
  12. 安装官方原版win10系统
  13. 微信小程序-----消息模版(最全解释)
  14. OSPF多区域配置【eNSP实现】
  15. 京东商品历史价格信息API接口-(item_history_price-获取商品历史价格信息API接口),京东API接口
  16. 数学建模竞赛在中国的蝗虫式增长
  17. python 获取qq群成员信息_用Python编写工具获取QQ群成员的昵称和号码,使用,及,小...
  18. 什么是大数据和大数据平台?
  19. DApp 上线 BitPortal币通钱包申请指南
  20. ff14怎么显示服务器时间,《FF14》8月20日维护到几点 最终幻想14服务器迁移维护公告...

热门文章

  1. 使用广泛的pdf分割软件
  2. 基于DS3231时钟模块的stm32 Hal库程序,源码
  3. XlsOrXlsxUtil
  4. 前端二维码扫描库html5-qrcode使用(据说已不能用)
  5. MAC OS绕过开机密码
  6. Android 12关闭Selinux
  7. tree-shaking的概念及其工作原理
  8. Webug-webshell爆破
  9. Ubuntu18.4官方安装Nginx教程
  10. 用10元,20元,50元三种币值的纸币凑出1000元,一共有多少种组合(C++实现)三种思路,两种实现