如何使用嵌入式firebirdsqlforlinux和Windows分发Python程序

2024-09-28 19:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

小结:

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

背景(有些冗长):

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

几周后,我用SQLAlchemy和SQLite重新编写了代码。现在的问题是评估功能需要10分钟(!)每支股票。再乘以最初竞争的12个“基因组”,加起来大约200个小时。我开始想,这可能与SQLite的并发锁有关,或者其他类似的东西,所以我开始尝试使用Firebird,因为它是我所知道的唯一一个在文件中存储数据库的软件。在

问题阐述:

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

最终用户是否需要进行任何数据库管理来实现这一点;也就是说,他们是否需要手动设置用户等,就好像我刚刚给了他们一个fdb文件,并让他们计算出其余的?或者安装Firebird的基本软件包就足够了吗?在重新分发Firebird数据库的过程中,我能得到一些接近SQLite的简单性的东西吗?我需要传递给SQLalchemy/FDB/Kinterbasedb以使用嵌入式服务器的特殊语法吗?(我在SQLalchemy或FDB的网站上都找不到任何关于这个的信息)。我的程序能在Linux和Windows上无缝运行吗,还是需要对每种情况进行稍微不同的设置?在

提前感谢所有能回答这些问题的人。在


Tags: 文件代码程序服务器数据库sqlitesqlsqlalchemy
1条回答
网友
1楼 · 发布于 2024-09-28 19:27:34

嗯,我只能给出部分答案。但我想从一开始就足够了。在

让我们从Firebird嵌入式开始:正如您所写的-使用linux作为操作系统,您必须提供完整的安装。别无选择。在

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

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

提示:在Win7/8上,不要安装到%PROGRAM FILES%或{}

与火鸟交谈: 虽然您有两个选择,但对于这两个选项,我不知道它们是否以及如何使用SQLAlchemy:

  • 来自firebird的fdb模块。安装fdb软件包时,请将舒尔fbclient.dll在搜索路径中。在
  • pyfirebirdsql模块:https://github.com/nakagami/pyfirebirdsql/,它不需要dll。缺点是没有模块的fdb作为快速的部分数据库引擎。就我个人而言,我只在短时间内使用它。在

使用fdb模块,您还可以与firebird服务api对话,从创建覆盖数据库到查询头统计信息,最后执行备份/恢复操作。在

这至少可以回答最终用户是否需要执行任何数据库管理的问题。在

相关问题 更多 >