2

我想尝试/玩弄非关系数据库,最好的解决方案是:

  • 便携,这意味着它不需要安装。理想情况下,只需将目录复制粘贴到某个地方就可以了。我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具。
  • 可从 python 访问
  • 适用于Windows和Linux

你有什么可以推荐给我的?

本质上,我希望能够将这个系统安装在我几乎没有用户权限的共享 linux 服务器上。

4

9 回答 9

7

我建议您在考虑许可问题的情况下考虑BerkelyDB

我已经厌倦了人们在没有资格的情况下推荐 BerkleyDB - 你只能在 GPL 下分发 BDB 系统,或者 Oracle 的一些未知且不公开的许可费用。

对于“本地”在不被外部各方使用的地方玩耍,这可能是一个好主意。请注意,有一个许可证等着咬你。

这也提醒我们,在要求技术建议时说明 GPL 是否可接受是一个好主意。

我自己关于可移植 C API 数据库的问题来看,虽然建议了一系列其他产品,但没有一个嵌入式产品具有 Python 绑定。

于 2009-02-23T04:49:08.340 回答
5

Metakit是一个有趣的非关系型嵌入式数据库,它支持 Python。

安装只需要复制一个共享库和 .py 文件。它适用于 Windows、Linux 和 Mac,并且是开源的(MIT 许可)。

于 2009-02-23T03:01:27.567 回答
4

伯克利数据库

于 2009-02-22T16:35:08.947 回答
4

如果您习惯于认为关系数据库必须像 PostgreSQL 或 MySQL 那样庞大而沉重,那么您会对 SQLite 感到惊喜。

它是关系型的,非常小,使用单个文件,具有 Python 绑定,不需要额外的权限,并且可以在 Linux、Windows 和许多其他平台上运行。

于 2009-02-22T16:43:43.903 回答
3

你看过CouchDB吗?它是非关系型的,可以相对轻松地迁移数据,并且它具有couchdb-python形式的 Python API 。不过,它确实有一些相当不寻常的依赖关系,比如 SpidermonkeyErlang

至于纯 python 解决方案,我不知道PyDBLite已经走了多远,但仍然值得一试。

于 2009-02-22T16:41:53.627 回答
2

BerkeleyDB:(似乎有一个与 python 的 API 绑定:http ://www.jcea.es/programacion/pybsddb.htm )

于 2009-02-22T16:35:12.457 回答
0

你看过Zope 对象数据库吗?

此外,SQLAlchemyDjango 的 ORM层使 SQLite 上的模式管理几乎透明。


编辑

从http://www.sqlalchemy.org/docs/05/ormtutorial.html#define-and-create-a-table开始, 了解如何创建 SQL 表以及它们如何映射到 Python 对象。

虽然您的问题含糊不清,但您的评论似乎表明您可能想先定义 Python 对象,让它们工作,然后通过 SQLAlchemy 将它们映射到关系模式对象。

于 2009-02-22T17:43:29.187 回答
0

如果您只是从 Python 来来往往,您可能会考虑使用Pickle来序列化对象。如果您想使用其他工具来访问相同的数据,那当然是行不通的。它内置在 python 中,所以你不应该有任何特权问题,但它不是一个真正的数据库,所以它可能不适合你的实验需要。

于 2009-02-23T03:52:37.553 回答
0

在此处添加对 TinyDB 的引用,因为此页面显示在许多搜索的顶部。它是python中的可移植非关系数据库。它将 python dicts 存储到本地 json 文件中,并使它们可用于类似于 mongodb 的数据库操作。它还具有对 mongodb 命令的端口的扩展,不同之处在于您将在本地 json 文件上操作,而不是在另一个系统服务器上工作。

与目前选择的答案不同,它是在一个宽松的 MIT 开放许可证下。

链接:

于 2018-03-25T02:28:12.683 回答