摘要:
用Python代码重新分发Firebird SQL数据库的最佳(最简单、最灵活、最简单)方法是什么,以便最终用户可以使用它而不必费心安装和维护Firebird?
背景(稍长):
我一直在尝试编写一个程序,根据这些基本面和随机权重筛选股票基本面并对不同公司的股票进行评估。我注意到,经过一段时间后,这个节目似乎只是停顿。我确实在这里和那里使用多线程,我认为死/活锁,但除了梳理一下代码,看看它是否有意义,我无法调试。我注意到我也消耗了大量的RAM,因为所有这些数据都存储在内存中的大型Python块中。所以我想把它放到SQL数据库中可以解决这个问题。
几周后,我又开始使用SQLAlchemy和SQLite的代码了。现在的问题是,评估功能需要10分钟(!)每只股票。再乘以最初竞争的12个“基因组”,总共大约有200个小时。我开始想,这可能与SQLite的并发锁有关,或者类似的东西,所以我开始尝试使用Firebird,因为它是我知道的唯一将数据库存储在文件中的锁。
问题阐述:
理想情况下,我只需将我的代码抛到磁盘或服务器上,将其带到另一台带有Python的计算机上,然后立即运行所有内容。这对SQLite来说是可行的。火鸟有可能吗?我知道Windows有一个单独的嵌入式包,但是Linux只有经典服务器附带的libfbembed库。docs说Linux总是需要安装某些版本的Firebird服务器。
最终用户是否需要做任何数据库管理工作;也就是说,他们是否需要手动设置用户等,就好像我刚刚给了他们一个fdb文件,并告诉他们要找出其余的文件吗?还是仅仅安装Firebird的基本软件包就足够了?在重新分发Firebird数据库时,我是否能够获得与SQLite的简单性相近的东西呢?是否需要将任何特殊语法传递给SQLalchemy/FDB/Kinterbasedb以使用嵌入式服务器?(我在SQLalchemy或FDB的网站上都找不到这方面的任何信息)。我的程序能在Linux和Windows上无缝运行吗?或者,对于每一种情况,是否需要稍微不同的设置?
谢谢,任何能回答这些问题的人。
发布于 2014-03-25 23:16:14
我只能给出部分答案。但我想这就足够了。
让我们从Firebird嵌入式开始:正如您编写的那样--使用linux作为操作系统,您必须提供一个完整的安装。没有别的办法了。
提示:使用火鸟提供的本机tgz,而不是从发行版交付的任何包-以避免依赖地狱。
在Windows上安装Firebird : Windows Firebird安装程序主要是“通过单击”的方式。幸运的是,您可以自定义安装程序:安装Firebird并查看doc\scripted-install.txt。
提示:在Win7 7/8上不要安装到%PROGRAM FILES%
或%PROGRAM FILES (x86)%
中
与firebird交谈: AFAIK您有两个选项,但对于这两个选项,我都不知道它们是否和如何与SQLAlchemy一起工作:
使用fdb模块,您还可以与firebird服务api对话--从创建删除数据库到查询头统计信息,最后是备份/还原操作。
如果最终用户需要执行任何数据库管理,那么至少应该回答这个问题。
https://stackoverflow.com/questions/19174286
复制