1

我正在尝试使用 Python fdb 库从我的本地计算机连接到位于服务器上的 Firebird 1.5 数据库。但我没有运气。
服务器是运行 Firebird 1.5.6 作为服务的 Windows 2008 服务器 R1。它还有一个名为firebird.
我如何通过python连接到它?我正在使用这段代码:

import fdb
db = fdb.connect(host='192.168.40.28', database="C:\databases\database12.GDB", user='admin', password='admin')

但它会产生这个结果:

Traceback (most recent call last):
  File "data.py", line 4, in <module>
    db = fdb.connect(host='192.168.40.28', database="C:\databases\database12.GDB", user='admin', password='admin')
  File "/usr/local/lib/python2.7/dist-packages/fdb/fbcore.py", line 666, in connect
    "Error while connecting to database:")
fdb.fbcore.DatabaseError: ('Error while connecting to database:\n- SQLCODE: -902\n- Unable to complete network request to host "192.168.40.28".\n- Failed to establish a connection.', -902, 335544721)

我在这里做错了什么?

4

3 回答 3

3

假设 IP192.168.40.28是正确的,我的下一个问题是您没有3050打开端口(那是 Firebird 的默认端口)。检查服务器的防火墙并打开端口。您可以使用其他端口而不是3050通过RemoteServicePortfirebird.conf文件中设置参数,但是您也必须在connect方法中设置端口参数。

于 2013-03-29T15:10:55.873 回答
1

正如其他答案所述,检查端口 3050 是否打开。

但是,fdb只支持 Firebird 2.0 或更高版本。对于 Firebird 1.5,您可以使用pyodbcpyfirebirdsql

Note that, among other issues (like not handling Firebird INTEGER datatypes properly), pyfirebirdsql isn't 100% compliant with PEP 249 -- Python DB API 2.0 as calls to Cursor.rowcount always return -1.


Edit: After posting this, I took it upon myself to write the code for pyfirebirdsql's rowcount function, so now it works as expected, instead of always returning 1. Shortly after that, the pyfirebirdsql author fixed the INTEGER issues as well.

于 2013-04-08T15:06:16.710 回答
0

您必须检查主机中打开的端口,如 ain 所说。顺便说一句,fdb 仅适用于 firebird 2.0 及更高版本。看看这个。 https://fdb.readthedocs.org/en/latest/getting-started.html#installation

于 2013-03-29T17:13:17.793 回答