三个 Python 数据库一览:PickleDB、TinyDB 和 ZODB

数据的持久性在大多数软件应用程序中起着至关重要的作用。本文介绍了三种用 Python 实现的数据库——pickleDB、TinyDB 和 ZODB。让我们探索它们的独特特征和用例场景。

对大量数据库的支持是使 Python 成为软件开发人员最喜欢的语言的众多特性之一。除了支持MySQL、Oracle、PostgreSQL、Informix 等通用数据库系统外,它还支持许多其他特定系统。例如,它支持嵌入式数据库,如 SQLite 和 ThinkSQL。并且支持Neo4J等图形数据库。

本文探讨了三个 Python 数据库——pickleDB、TinyDB 和 ZODB。这三个是在 Python 中实现的,用于特定目的。

泡菜数据库

pickleDB 是一个简单而轻量级的数据存储。它将数据存储为键值存储。它基于名为 SimpleJSON 的 Python 模块,它允许开发人员以简单快捷的方式处理 JSON(JavaScript Object Notation)。SimpleJSON 是一个没有依赖的纯 Python 实现;它用作 Python 2.5+ 版本的编码器和解码器。

由 Harrison Erd 开发,pickleDB 可用于 BSD 三条款许可证。可以使用以下命令毫不费力地安装它:

$ pip install pickledb

pickleDB 这个名字的灵感来自于一个名为 pickle 的 Python 模块,pickleDB 之前使用过这个模块。尽管pickleDB 的后续版本开始使用SimpleJSON 模块,但仍保留了pickle 名称。

以下代码段说明了使用 pickleDB 的基础知识。

>>> import pickledb
 
>>> db = pickledb.load('example.db', False)
 
>>> db.set('key', 'value')
True
 
>>> db.get('key')
'value'
 
>>> db.dump()
True

下面解释了pickleDB的一些常用命令。

  • LOAD 路径转储:这用于从文件加载数据库。
  • SET 键值:这是带有字符串的键的值。
  • GET key:用于获取key的值。
  • GETALL:用于获取数据库中的所有键。
  • REM 键:删除键。
  • DUMP:将内存中的数据库保存到load命令指定的文件中。

除了上面提到的命令之外,还有各种其他命令。

pickleDB 可用于那些适合键值存储类型格式的场景。

图 1:Python 数据库

小数据库

顾名思义,TinyDB 是一个紧凑、轻量级的数据库,并且是面向文档的。它是 100% 用 Python 编写的,没有外部依赖。正如官方文档所说,TinyDB 是一个为你的幸福而优化的数据库。

最适合 TinyDB 的应用程序是小型应用程序,传统的基于 SQL-DB 服务器的方法将使其过载。TinyDB 的主要功能如下:

  • 顾名思义,TinyDB 非常小。完整的源代码只有1200行。
  • TinyDB 基于面向文档的存储。MongoDB 等流行工具采用了这种类型的存储。
  • TinyDB 的 API 非常简单和干净。首先,TinyDB 的设计考虑到了易用性。
  • TinyDB 的另一个令人喜欢的特性是非依赖性。此外,TinyDB 支持所有最新版本的 Python。它适用于 Python 2.6、2.7、3.3 – 3.5。
  • 可扩展性是 TinyDB 的另一个主要特性。在中间件的帮助下,可以扩展 TinyDB 行为以满足特定需求。

尽管 TinyDB 具有多种优势,但它并不是解决问题的一刀切。它有一些限制,如下所列:

  • TinyDB 不适合那些以高速数据检索为关键的场景。
  • 如果您需要从多个进程或线程访问数据库,那么 TinyDB 将不是最佳选择。同样,基于 HTTP 服务器的访问是另一种不适合的场景。

了解了 TinyDB 的优缺点后,让我们来看看如何使用它。与许多其他软件包的情况一样,可以使用以下命令简单地安装 TinyDB:

$ pip install tinydb

以下代码片段探讨了如何在 TinyDB 中创建和存储值:

from tinydb import TinyDB, Query
db = TinyDB('db.json')
db.insert({ 'type': 'OSFY', 'count': 700})
db.insert({ 'type': 'EFY', 'count': 800})

图 2:微型数据库功能

成功执行上述代码段后,您可以检索如下所示的值。
要列出所有值,请给出以下命令:

db.all()
[{ 'count': 700, 'type': 'OSFY'}, { 'count': 800, 'type': 'EFY'}]

要搜索和列出值,请键入:

Magazine = Query()
db.search(Magazine.type == 'OSFY')
[{ 'count': 700, 'type': 'OSFY'}]
 
db.search(Magazine.count > 750)
[{ 'count': 800, 'type': 'EFY'}]

要更新值,请使用以下命令:

db.update({ 'count': 1000}, Magazine.type == 'OSFY')
db.all()
 
[{ 'count': 1000, 'type': 'OSFY'}, { 'count': 800, 'type': 'EFY'}]

要删除值,请键入:

db.remove(Magazine.count < 900)
db.all()
[{ 'count': 800, 'type': 'EFY'}]

要删除所有值,请给出以下命令:

db.purge()
db.all()
[]

TinyDB 使开发人员能够以两种不同的方式处理数据,如下所列:

  • JSON
  • 在记忆中

默认值为 JSON,如果要将其更改为内存中,则需要明确指定。

from tinydb.storages import MemoryStorage
db = TinyDB(storage=MemoryStorage)

数据库

ZODB 是 Python 的本机对象数据库。其主要特点是:

  • 代码与数据库的无缝集成。
  • 与数据库相关的操作不需要单独的语言。
  • 不需要数据库映射器。

ZODB 更适合以下场景:

  • 当开发人员想要更多地关注应用程序而不是构建大量数据库代码时。
  • 当应用程序有很多复杂的关系和数据结构时。
  • 当数据读操作比写操作大时。

同时,ZODB不适合应用需要大量数据写入操作的场景。
要安装 ZODB,请使用以下命令:

$ pip install ZODB

与数据库建立连接的简单代码片段如下所示:

import ZODB, ZODB.FileStorage
storage = ZODB.FileStorage.FileStorage('mydata.fs')
db = ZODB.DB(storage)
connection = db.open()
root = connection.root

ZODB 允许开发人员使用多种存储选项,如下所列:

  • 内存数据库
  • 本地文件
  • 远程服务器上的数据库
  • 高级选项,例如压缩和加密存储

对象的成员可以使用 ZODB 函数直接存储。ZODB 也支持事务。

本文试图深入了解 Python 数据库的世界。除了本文介绍的三个数据库之外,还有很多其他的数据库,例如buzhug和CodernityDB。最重要的是,所有这些数据库工具在您使用它们时都提供了 Pythonic 氛围。

Guess you like

Origin blog.csdn.net/allway2/article/details/121375789