概括:
使用 Python 代码重新分发 Firebird SQL 数据库的最佳(最简单、最灵活、最简单)的方法是什么,最终用户可以使用它而无需安装和维护 Firebird 的麻烦?
背景(有点啰嗦):
我一直在尝试编写一个程序来筛选股票基本面,并根据这些基本面和随机权重评估不同公司的股票。我注意到,经过一段时间后,程序似乎停止了。我确实在这里和那里使用了多线程,并且我考虑过死锁/活锁,但除了梳理代码并查看它是否有意义之外,我无法调试它。我注意到我也消耗了大量的 RAM,因为所有这些数据都保存在内存中的大 Python 字典中。所以我想把它放在 SQL 数据库中可以解决这个问题。
几周后,我让代码再次与 SQLAlchemy 和 SQLite 一起工作。现在的问题是评估功能需要十分钟(!)每只股票。乘以最初竞争的总共 12 个“基因组”,这将加起来大约 200 小时。我开始想这可能与 SQLite 的并发锁或类似的东西有关,所以我开始尝试使用 Firebird,因为它是我所知道的唯一一个将数据库存储在文件中的另一个。
问题阐述:
理想情况下,我可以将我的代码放在磁盘或服务器上,将其带到另一台装有 Python 的计算机上,然后开箱即用地运行所有内容。这对于 SQLite 是可行的。火鸟可以吗?我知道 Windows 有一个单独的嵌入式包,但 Linux 只有经典服务器附带的 libfbembed 库。文档说 Linux 总是需要正确安装某些版本的 Firebird 服务器。
最终用户是否需要进行任何数据库管理才能完成这项工作?也就是说,他们是否需要手动设置用户等,就像我刚刚给他们一个 fdb 文件并告诉他们找出其余的一样?还是为 Firebird 安装基本软件包就足够了?在重新分配 Firebird 数据库时,我是否能够获得接近 SQLite 的简单性?我需要将任何特殊语法传递给 SQLalchemy/FDB/Kinterbasedb 以使用嵌入式服务器吗?(我在 SQLalchemy 或 FDB 的网站上都找不到任何关于此的信息)。我的程序能否在 Linux 和 Windows 上无缝运行,或者是否需要针对每种情况进行略微不同的设置?
在此先感谢任何可以回答其中一些问题的人。