我想尝试/玩弄非关系数据库,最好的解决方案是:
- 便携,这意味着它不需要安装。理想情况下,只需将目录复制粘贴到某个地方就可以了。我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具。
- 可从 python 访问
- 适用于Windows和Linux
你有什么可以推荐给我的?
本质上,我希望能够将这个系统安装在我几乎没有用户权限的共享 linux 服务器上。
我想尝试/玩弄非关系数据库,最好的解决方案是:
你有什么可以推荐给我的?
本质上,我希望能够将这个系统安装在我几乎没有用户权限的共享 linux 服务器上。
Metakit是一个有趣的非关系型嵌入式数据库,它支持 Python。
安装只需要复制一个共享库和 .py 文件。它适用于 Windows、Linux 和 Mac,并且是开源的(MIT 许可)。
如果您习惯于认为关系数据库必须像 PostgreSQL 或 MySQL 那样庞大而沉重,那么您会对 SQLite 感到惊喜。
它是关系型的,非常小,使用单个文件,具有 Python 绑定,不需要额外的权限,并且可以在 Linux、Windows 和许多其他平台上运行。
你看过CouchDB吗?它是非关系型的,可以相对轻松地迁移数据,并且它具有couchdb-python形式的 Python API 。不过,它确实有一些相当不寻常的依赖关系,比如 Spidermonkey和Erlang。
至于纯 python 解决方案,我不知道PyDBLite已经走了多远,但仍然值得一试。
BerkeleyDB:(似乎有一个与 python 的 API 绑定:http ://www.jcea.es/programacion/pybsddb.htm )
你看过Zope 对象数据库吗?
此外,SQLAlchemy或Django 的 ORM层使 SQLite 上的模式管理几乎透明。
编辑
从http://www.sqlalchemy.org/docs/05/ormtutorial.html#define-and-create-a-table开始, 了解如何创建 SQL 表以及它们如何映射到 Python 对象。
虽然您的问题含糊不清,但您的评论似乎表明您可能想先定义 Python 对象,让它们工作,然后通过 SQLAlchemy 将它们映射到关系模式对象。
如果您只是从 Python 来来往往,您可能会考虑使用Pickle来序列化对象。如果您想使用其他工具来访问相同的数据,那当然是行不通的。它内置在 python 中,所以你不应该有任何特权问题,但它不是一个真正的数据库,所以它可能不适合你的实验需要。