【发布时间】:2009-09-10 19:31:36
【问题描述】:
使用嵌入式数据库的最佳方式是什么,比如 Python 中的 sqlite:
- 占用空间应该很小。我只需要每张表几千条记录。每个数据库只有几个表。
- 如果它是 Python 默认安装提供的,那就太好了。必须是开源的,可在 Windows 和 Linus 上使用。
- 最好不直接编写 SQL,但完全不需要 ORM。可以保护我免受实际数据库的影响,但不会像图书馆那么大。类似于 ADO 的东西会很棒。
- 主要是通过代码使用,但如果有 GUI 前端,那就太好了
- 只需几页即可开始使用。我不想通过页面阅读表格是什么以及 Select 语句是如何工作的。我都知道。
- 首选支持 Python 3,但 2.x 也可以。
使用不是网络应用程序。这是一个小型数据库,最多可容纳 5 个表。每个表中的数据只是几个字符串列。想想比腌制字典更大的东西
更新:非常感谢您的建议。
我正在谈论的用例相当简单。您可能会在一两天内完成。
这是一个 100 多行的 Python 脚本,它收集关于相对大量文件(比如 10k)的数据,并创建关于它们的元数据文件,然后创建一个关于整个文件树的大型元数据文件。我只需要避免重新处理已经处理的文件,并为更新的文件创建元数据,并更新主元数据文件。在某种程度上,缓存处理过的数据,并且只在文件更新时更新它。
如果缓存损坏/不可用,则只需处理整个树。这可能需要 20 分钟,但没关系。
请注意,所有处理都在内存中完成。
我想避免任何外部依赖,以便脚本可以轻松地放在任何系统上,只需安装 Python。作为 Windows,有时很难安装所有组件。 所以,在我看来,即使是数据库也可能是矫枉过正。
您可能不会启动 Office Word/Writer 来写一个小型的便笺式便笺,同样我也不愿意在这个用例中使用 Django 之类的东西。
从哪里开始?
【问题讨论】:
-
这是一个网络或桌面应用程序?
-
不是网络应用程序。几乎是一个桌面应用程序。对于这种特殊情况,我需要存储一些关于许多文件及其一些内容的元数据。除了调试之外,实际上并不需要 CRUD 和 UI。
-
我不明白这个“轻量级”要求以及 ORM 是如何不适合的。您所说的“重量级”是指:1. 太复杂而无法计算 2. 内存/磁盘要求? 3. 功能太多?
标签: python database sqlite ado