你好,我是征哥,在写程序的时候经常会需要将数据保存到本地,比如是配置文件,或者是中间过程数据,通过情况下我会选择 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. 固定资产拆分比例怎么计算_财税知识:固定资产处置增值税是怎么计算的?涉及哪些计算公式?...
  2. Can't get attribute '_rebuild_tensor_v2' on module 'torch._utils'
  3. MIMIC 以太坊医疗项目开发(1) Express Web Server介绍
  4. Linq to XML的练习
  5. 计算机粘贴功能不能用了,电脑复制粘贴不能用了【解决办法】
  6. 关于框架的胡言乱语(上)
  7. 9.03-Springboot要点记录
  8. 博客属性10个非常不错的CSS技巧
  9. .NET 和 Mono 的一点历史
  10. mlecms v2.2版权
  11. C++primer拾遗(第八章:IO库)
  12. 常量的定义与使用 1006 c#
  13. getQueryString方法使用
  14. 第三周笔记 c++ Boolan
  15. 通过bindservice方式调用服务方法里面的过程
  16. Atitit 院系和专业规划 大学里的院系,院一般指的都是学院,比如管理学院、法学院这种,系指的就是院里面的专业,比如中文系、哲学系这种。 中文系、哲学系 土木工程 目录 1. 经济管理学院 2
  17. 解构2019世界人工智能大会:三大变化,十年趋势,一场地球与火星的碰撞
  18. MAKEFILE【4】-Makefile中的wildcard用法
  19. 百度云服务器BCC 调用百度人工智能API失败的解决方法
  20. 2020最新PHP面试题(附带答案)

热门文章

  1. 两个集合取出不同的数据和相同的数据
  2. Linux学习(六)
  3. Floyd算法求解最短距离
  4. 多选下拉框,带全部选项
  5. 成年人的真正成熟,是从这5个“失去”开始的
  6. C++实现数独(附带过程)
  7. 梦网云通讯平台API单条短信发送接口single_send说明POST请求实例
  8. 高版本Chrome浏览器多路(25路)同时播放海康威视、大华摄像头RTSP流视频流方案
  9. 人脸识别---Gabor特征(mean pooling和max pooling)
  10. 中关村新时尚,流行裸体机