从第二个程序执行select语句是否安全

时间:2018-01-12 15:12:46

标签: python sql firebird

我对编程一般都很陌生。我正在尝试自学一些东西,以便为我工作的实验室开发一些简单的程序。我们目前正在使用生成和维护firebird数据库的商业软件。

我正在尝试开发一个连接上述数据库的软件(Python 3.0 - Tkinter),执行一堆select语句(根据用户指令),然后存储一些结果(和一些其他数据)在另一个Firebird数据库中。

我选择创建另一个数据库来存储这些新数据,因为我担心我会弄乱原始数据库,这非常重要。

现在,我想知道我所做的事情是否会以任何方式损害原始数据库的稳定性和完整性。两个程序将同时在同一个数据库上工作,但我的程序只会执行select语句。

希望我的问题很清楚,并提前感谢!

1 个答案:

答案 0 :(得分:0)

只要您只从数据库中选择,或者至少不修改其他程序(或那些表中的数据)所拥有的表,那么您应该是好的。

在具有通常事务隔离级别的Firebird中,读者不会阻止编写者。从另一个程序执行选择的唯一效果是数据库服务器上的额外负载,但除非你做了疯狂的事情(需要大量IO或其他处理能力的查询),这几乎不应该引起注意。

如果您使用读取提交的只读(ISOLATION_LEVEL_READ_COMMITED_RO)事务(请参阅FDB文档中的Transaction Management),那么您的程序甚至无法修改数据库。此选项是特定于FDB的,如果使用pyfirebirdsql,则需要查看pyfirebirdsql文档中的Advanced Transaction Control