美文网首页
一个纯 Python 编写的轻量级数据库 - TinyDB

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

作者: 逍遥_yjz | 来源:发表于2022-11-30 20:30 被阅读0次

TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。

TinyDB的目标是降低小型 Python 应用程序使用数据库的难度,对于一些简单程序而言与其用 SQL 数据库,不如就用TinyDB, 因为它有如下特点:

  • 轻便:当前源代码有 1800 行代码(大约 40% 的文档)和 1600 行测试代码。
  • 可随意迁移:在当前文件夹下生成数据库文件,不需要任何服务,可以随意迁移。
  • 简单:TinyDB 通过提供简单干净的 API 使得用户易于使用。
  • 用纯 Python 编写: TinyDB 既不需要外部服务器,也不需要任何来自 PyPI 的依赖项。
  • 适用于 Python 3.6+ 和 PyPy3: TinyDB 适用于所有现代版本的 Python 和 PyPy。
  • 强大的可扩展性:您可以通过编写中间件修改存储的行为来轻松扩展 TinyDB。
  • 100% 测试覆盖率:无需解释。

1.安装

开始之前,需要先安装它

pip install tinydb

2.简单的增删改查示例

初始化一个DB文件:

from tinydb import TinyDB
db = TinyDB('db.json')

这样就在当前文件夹下生成了一个名为 db.json 的数据库文件。

插入数据

往里面插入数据

from tinydb import TinyDB
db = TinyDB('db.json')
db.insert({'type': 'apple', 'count': 7})
db.insert({'type': 'peach', 'count': 3})

可以看到,我们可以直接往数据库里插入字典数据,不需要任何处理。下面是批量插入的方法:

db.insert_multiple([
    {'name': 'John', 'age': 22},
    {'name': 'John', 'age': 37}])
db.insert_multiple({'int': 1, 'value': i} for i in range(2))

查询所有数据

from tinydb import TinyDB
db = TinyDB('db.json')
db.all()
# [{'count': 7, 'type': 'apple'}, {'count': 3, 'type': 'peach'}]

除了 .all() 我们还可以使用for循环遍历db:

from tinydb import TinyDB
db = TinyDB('db.json')
for item in db:
    print(item)
# {'count': 7, 'type': 'apple'}
# {'count': 3, 'type': 'peach'}

如果你需要搜索特定数据,可以使用Query():

from tinydb import TinyDB
db = TinyDB('db.json')
Fruit = Query()
db.search(Fruit.type == 'peach')
# [{'count': 3, 'type': 'peach'}]
db.search(Fruit.count > 5)
# [{'count': 7, 'type': 'apple'}]

更新数据

from tinydb import TinyDB
db = TinyDB('db.json')
db.update({'foo': 'bar'})

# 删除某个Key
from tinydb.operations import delete
db.update(delete('key1'), User.name == 'John')

删除数据

删除数据也可以使用类似的条件语句:

from tinydb import TinyDB
db = TinyDB('db.json')
db.remove(Fruit.count < 5)
db.all()
# [{'count': 10, 'type': 'apple'}]

清空整个数据库:

from tinydb import TinyDB
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语句

from tinydb import where
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类似的逻辑操作:

# Negate a query:
db.search(~ (User.name == 'John'))
# Logical AND:
db.search((User.name == 'John') & (User.age <= 30))
# Logical OR:
db.search((User.name == 'John') | (User.name == 'Bob'))

TinyDB的介绍就到这里,你还可以访问他们的官方文档,查看更多的使用方法:

https://tinydb.readthedocs.io/en/latest/usage.html

相关文章

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

    TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。 TinyDB的...

  • Spring Boot : H2 数据库

    H2 数据库 H2 数据库是一个轻量级的数据库,它十分适合作为内嵌式数据库,它采用纯 Java 编写,因此不受到平...

  • 1.9.4 管理站点

    服务器 运行如下命令可以开启服务器 可以不写ip,默认端口为8000 这是一个纯python编写的轻量级web服务...

  • 入门(十)Flask框架

    1、简介 常见的Python Web框架: Flask:是一个使用 Python 编写的轻量级Web框架,快速开发...

  • bLazy.js使用简介

    简介# bLazy是一个轻量级, 滚动懒加载图片的JavaScript库, 使用纯JavaScript编写, 不依...

  • Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSG...

  • Flask入门的第一个项目

    前言: Flask简介:Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 Werkzeug...

  • 2019-02-10

    Flask基础介绍 Flask 是一个轻量级的 Web 应用框架, 使用 Python 编写。基于 Werkzeu...

  • flask接口开发-急用版

    介绍 flask是一个使用python编写的轻量级web应用框架,让我们可以使用python快速实现一个网站或者a...

  • Flask框架基础(一)

    Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,...

网友评论

      本文标题:一个纯 Python 编写的轻量级数据库 - TinyDB

      本文链接:https://www.haomeiwen.com/subject/fptjfdtx.html