我想尝试/玩非关系型数据库,最好是解决方案是:
你能为我推荐什么?
基本上,我希望能够在我没有用户权限的共享linux服务器上安装此系统。
答案 0 :(得分:7)
我建议您考虑BerkelyDB 并了解许可问题。
我对人们在没有资格的情况下推荐BerkleyDB感到非常厌倦 - 你只能在GPL下分发BDB系统,或者从Oracle那里分发一些未知且不公开的许可费用。
对于在当地没有使用的“本地”游戏,它可能是一个好主意。请注意,有许可证等着咬你。
这也提醒我们,在询问GPL是否可以接受的技术建议时,这是一个好主意。
从my own question关于可移植的C API数据库,虽然建议了一系列其他产品,但没有一个嵌入式产品具有Python绑定。
答案 1 :(得分:5)
Metakit是一个有趣的非关系型嵌入式数据库,支持Python。
安装只需复制一个共享库和.py文件。它适用于Windows,Linux和Mac,并且是开源的(MIT许可)。
答案 2 :(得分:4)
答案 3 :(得分:4)
如果您习惯认为关系数据库必须像PostgreSQL或MySQL一样庞大而且很重,那么SQLite会让您感到惊喜。
它是关系型的,非常小,使用单个文件,具有Python绑定,不需要额外的权限,可以在Linux,Windows和许多其他平台上运行。
答案 4 :(得分:3)
你看过CouchDB了吗?它是非关系型的,可以相对轻松地迁移数据,并且它具有couchdb-python形式的Python API。它确实有Spidermonkey和Erlang形式的一些相当不寻常的依赖关系。
对于纯python解决方案,我不知道PyDBLite已经走了多远,但它仍然值得一试。
答案 5 :(得分:2)
BerkeleyDB :(似乎有一个绑定到python的API:http://www.jcea.es/programacion/pybsddb.htm)
答案 6 :(得分:0)
你看过Zope Object Database吗?
此外,SQLAlchemy或Django's ORM层使SQLite上的架构管理几乎透明。
修改强>
从http://www.sqlalchemy.org/docs/05/ormtutorial.html#define-and-create-a-table开始 了解如何创建SQL表以及它们如何映射到Python对象。
虽然你的问题很模糊,但你的评论似乎表明你可能想要先定义Python对象,让它们工作,然后通过SQLAlchemy将它们映射到关系模式对象。
答案 7 :(得分:0)
如果您只是来自Python,您可能会考虑使用Pickle来序列化对象。如果您希望使用其他工具来访问相同的数据,那么就无法工作了。它内置于python中,因此您不应该有任何特权问题,但它不是真正的数据库,因此它可能不适合您实验的需要。
答案 8 :(得分:0)
在此处添加对TinyDB的引用,因为此页面显示在许多搜索的顶部。它是python中的一个可移植的非关系数据库。它将python dicts存储到本地json文件中,并使它们可用于类似于mongodb的数据库操作。它还有一个扩展到mongodb命令的端口,不同之处在于,您不会在另一个系统服务器上工作,而是在本地json文件上运行。
与目前选择的答案不同,它是在宽松的MIT开放许可下。