如何分发带有嵌入式Firebird SQL for Linux和Windows的Python程序



摘要:

使用Python代码重新分发Firebird SQL数据库的最佳(最简单,最灵活,最简单的(方法是什么,最终用户可以使用它而无需安装和维护Firebird的麻烦?

背景(有点啰嗦(:

我一直在尝试编写一个程序,筛选股票基本面,并根据这些基本面和随机权重评估不同公司的股票。我注意到,经过一段时间后,程序似乎停滞不前。我确实在这里和那里使用了多线程,并且我考虑了死/活锁,但除了梳理代码并查看它是否有意义之外,我无法调试它。我注意到我也消耗了很多RAM,因为所有这些数据都保存在内存中的大Python字典中。所以我认为把它放在SQL数据库中可以解决这个问题。

几周后,我让代码再次与SQLAlchemy和SQLite一起工作。现在的问题是,评估函数每只股票需要十分钟(!(。乘以最初竞争的总共十二个"基因组",这将加起来大约 200 小时。我开始想这可能与SQLite的并发锁或类似的东西有关,所以我开始尝试使用Firebird,因为它是我知道的唯一一个将数据库存储在文件中的人。

问题阐述:

理想情况下,我可以将我的代码放在磁盘或服务器上,将其带到另一台装有Python的计算机,然后开箱即用地运行所有内容。这在SQLite上是可行的。火鸟可以吗?我知道Windows有一个单独的嵌入式软件包,但是Linux只有Classic服务器附带的libfbembed library。文档说Linux总是需要安装某些版本的Firebird服务器。

最终用户是否需要执行任何数据库管理才能完成这项工作;也就是说,他们是否需要手动设置用户等,就好像我刚刚给了他们一个 fdb 文件并告诉他们找出其余部分一样?还是安装Firebird的基本软件包就足够了?在重新分发Firebird数据库时,我是否能够获得接近SQLite简单性的东西?我需要传递给SQLalchemy/FDB/Kinterbasedb才能使用嵌入式服务器吗?(我在SQLalchemy或FDB的网站上都找不到任何关于此的内容(。我的程序可以在 Linux 和 Windows 上无缝运行吗,还是每种情况都需要略有不同的设置?

提前感谢任何可以回答其中一些问题的人。

好吧

,我只能给出部分答案。但我认为这足以开始。

让我们从Firebird嵌入式的东西开始:正如你所写的 - 使用linux作为操作系统,你必须提供完整的安装。没有其他办法。

提示:使用Firebird提供的本机tgz,而不是从发行版提供的任何软件包 - 以避免依赖地狱。

在Windows上安装Firebird:Windows Firebird安装程序主要是"点击"的东西。幸运的是,您可以自定义安装程序:安装 Firebird 并查看 doc\scripted-install.txt。

提示:在Win7/8上不要安装到%PROGRAM FILES%%PROGRAM FILES (x86)%

与火鸟对话:AFAIK 您有两种选择,但对于这两种选择,我不知道它们是否以及如何与 SQLAlchemy 一起工作:

  • 来自火鸟的 fdb 模块。安装 fdb 软件包时,使 shure 成为相应的 fbclient.dll 在搜索路径中。
  • Pyfirebirdsql 模块:https://github.com/nakagami/pyfirebirdsql/不需要 DLL 之类的。部分缺点 - 它不如 fdb 模块快,因为没有真正的数据库引擎。就个人而言,我只将其用于简短的查找。

使用 fdb 模块,您还可以与 firebird 服务 API 进行通信 - 从创建过度删除数据库到查询标头统计信息,最后是备份/还原操作。

如果最终用户需要执行任何数据库管理,这至少应该回答这个问题。

最新更新