如何使用嵌入式Firebird SQL for Linux和Windows分发Python程序

时间:2013-10-04 05:57:32

标签: python sqlalchemy firebird2.5 firebird-embedded

要点:

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

背景(有点啰嗦):

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

几周后,我再次使用SQLAlchemy和SQLite运行代码。现在的问题是评估功能每个库存需要十分钟(!)。乘以最初竞争的总共12个“基因组”,这将累计大约200小时。我开始认为这可能与SQLite的并发锁或其他类似,所以我开始尝试使用Firebird,因为它是我知道的唯一一个将数据库存储在文件中的。

问题阐述:

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

最终用户是否需要进行任何数据库管理才能实现这一目标;也就是说,他们是否需要手动设置用户等,好像我刚刚给他们一个fdb文件并告诉他们弄清楚剩下的?或者是否足以为Firebird安装基本软件包?在重新分发Firebird数据库时,我是否能够获得接近SQLite简单性的东西?我需要传递给SQLalchemy / FDB / Kinterbasedb使用嵌入式服务器的特殊语法吗? (我在SQLalchemy或FDB的网站上找不到任何相关内容)。我的程序可以在Linux和Windows上无缝运行,还是需要针对每种情况略有不同的设置?

提前致谢,任何能够回答其中一些问题的人。

1 个答案:

答案 0 :(得分:2)

好吧,我只能给出部分答案。但我认为开始时就足够了。

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

提示:使用firebird提供的本机tgz,而不是从分发中提供的任何包 - 以避免依赖地狱。

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

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

与火鸟交谈: AFAIK你有两个选择,但是对于我们不知道他们是否以及如何使用SQLAlchemy:

  • 来自firebird的fdb模块。安装fdb软件包时,请在搜索路径中使用相应的fbclient.dll。
  • pyfirebirdsql模块:https://github.com/nakagami/pyfirebirdsql/,不需要dll或者那个。部分缺点 - 它没有fdb模块那么快,因为没有真正的数据库引擎。我个人只用它来进行简短的查找。

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

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