使用嵌入式数据库的最佳方式是什么,比如 Python 中的 sqlite:
- 占地面积应该很小。我只需要每个表几千条记录。每个数据库只有少数表。
- 如果它是 Python 默认安装提供的,那就太好了。必须是开源的,可在 Windows 和 Linus 上使用。
- 如果不直接编写 SQL,但完全不需要 ORM,那就更好了。一些可以保护我免受实际数据库影响的东西,但不是那么大的图书馆。类似于 ADO 的东西会很棒。
- 大多数情况下会通过代码使用,但如果有一个 GUI 前端,那就太好了
- 只需几页即可开始。我不想一页一页地阅读表是什么以及 Select 语句如何工作。我知道这一切。
- 首选支持 Python 3,但 2.x 也可以。
该用途不是网络应用程序。这是一个小型数据库,最多可容纳 5 个表。每个表中的数据只是几个字符串列。想一些比腌制字典更大的东西
Update: 非常感谢您的宝贵建议。
我正在谈论的用例相当简单。您可能会在一两天内完成。
这是一个 100 行左右的 Python 脚本,它收集有关相对大量文件(例如 10k)的数据,并创建有关它们的元数据文件,然后创建有关整个文件树的一个大型元数据文件。我只需要避免重新处理已处理的文件,并为更新的文件创建元数据,并更新主元数据文件。在某种程度上,缓存已处理的数据,并且仅在文件更新时更新它。
如果缓存损坏/不可用,则只需处理整个树即可。可能需要 20 分钟,但没关系。
请注意,所有处理都是在内存中完成的。
我想避免任何外部依赖,这样脚本就可以轻松地放置在任何只需安装 Python 的系统上。作为 Windows,有时很难安装所有组件。
所以,在我看来,即使是数据库也可能是一种矫枉过正。
您可能不会启动 Office Word/Writer 来编写一个小的便利贴类型注释,同样,我也不愿意在这个用例中使用 Django 之类的东西。
从哪儿开始?
我强烈推荐使用好的 ORM。当您可以使用 Python 对象来管理数据库行时,生活会变得更加轻松。
我是 Django 中 ORM 的粉丝。但那已经被推荐了,你说那太重量级了。
这让我只能推荐一个 ORM:Autumn http://autumn-orm.org/。非常轻量级,与 SQLite 配合得很好。如果您的嵌入式应用程序是多线程的,那么您绝对需要 Autumn;它具有支持多线程 SQLite 的扩展。 (全面披露:我编写了这些扩展并贡献了它们。我在为 RealNetworks 工作时编写了它们,我的老板允许我捐赠它们,所以公开感谢 RealNetworks。)
Autumn 是用纯 Python 编写的。对于 SQLite,它使用 Python 官方 SQLite 模块来执行实际的 SQL 操作。秋天本身的记忆足迹很小。
我不推荐 APSW。以我的愚见,它并没有真正给你带来多大的帮助。它只是提供了一种执行 SQL 语句的方法,让您掌握 SQL 的工作方式。此外,它支持 SQLite 的每一个功能,甚至是那些你很少使用的功能,因此它实际上比 Autumn 拥有更大的内存占用,但使用起来却不那么容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)