2013-03-29 41 views
1

我想連接到位於服務器上的Firebird 1.5數據庫,從我本地機器上使用Python fdb庫。 但我沒有運氣。
服務器是運行Firebird 1.5.6作爲服務的Windows 2008服務器R1。它還有一個稱爲firebird的系統DSN。
如何通過python連接到它?我使用此代碼:python fdb,試圖連接到外部的firebird 1.5超級服務器

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) 

我究竟做錯了什麼?

+1

系統DSN是不相關的,因爲您不使用ODBC。 –

回答

3

假設IP 192.168.40.28是正確的,我的下一個問題是你沒有打開端口3050(這是Firebird的默認端口)。檢查您的服務器的防火牆並打開端口。通過在firebird.conf文件中輸入RemoteServicePort參數,您可以使用其他端口而不是3050,但您必須在connect方法中也設置端口參數。

+0

感謝它真的是港口。 – NaGeL182

1

正如其他答案所述,請檢查端口3050是否打開。

但是,fdb僅支持Firebird 2.0或更高版本。對於火鳥1.5,您可以使用pyodbcpyfirebirdsql

需要注意的是,除其他事項外(如不處理火鳥整數數據類型正確),pyfirebirdsql不是100%符合 PEP 249 -- Python DB API 2.0作爲調用 Cursor.rowcount always return -1


編輯:張貼在此之後,我把它當自己寫pyfirebirdsql的rowcount函數的代碼,所以現在它按預期工作,而不是之後總是返回1.不久,pyfirebirdsql筆者固定INTEGER問題也是如此。

相關問題