2017-03-19 65 views
1

我使用的是Ubuntu,我想從客戶端計算機連接到sybase IQ服務器(遠程),我嘗試根據sybase文檔安裝/使用sqlanydb,但是我不請參閱與sybase服務器的IP相關的sqlanydb.connect()中的任何參數。我認爲這個例程想象sybase db在本地主機上,對嗎?客戶端使用Python3連接到sybase IQ

  • 我是否需要安裝客戶端上的SYBASE,以及能夠 連接到遠程Sybase數據庫?或者只是sqlanydb就夠了?

  • 如何讓此驅動程序連接到遠程服務器?

回答

2

您確實需要安裝客戶端軟件。 python驅動程序基本上是dbcapi客戶端庫的python界面,所以如果沒有在機器上安裝客戶端軟件,就不能使用它。

對於連接到遠程服務器,您可以使用HOST參數。該connect()函數接受作爲參數的任何有效的連接參數,所以像uid=steve;pwd=secretpassword;host=myserverhost:4567;dbn=mydatabase一個連接字符串將轉化爲:

sqlanydb.connect(uid = 'steve', 
        pwd = 'secretpassword', 
        host = 'myserverhost:4567', 
        dbn = 'mydatabase') 

連接參數記錄here。如果未使用HOST,客戶端將嘗試共享內存連接。共享內存比TCP快,但顯然只有在客戶端和服務器位於同一臺計算機上時纔有效。

+0

謝謝,是的,它的工作,我還發現另一種解決方案,使用'links = tcpip()...'我有興趣知道它與您的解決方案性能明智的區別! –

+0

'links'參數較舊,在不知道運行數據庫服務器的機器時使用。它發送UDP廣播數據包,服務器響應,然後從那裏建立TCP連接。 'host'參數稍後添加並指定服務器正在運行的位置。當使用'links'時,客戶端緩存結果,以便第二次和後續時間,它不必發送廣播。除第一次客戶端連接到特定服務器外,沒有性能差異。 –

0

你可以用下面的API連接,

import Sybase 
db = Sybase.connect('server','name','pass','database') 
c = db.cursor() 
c.execute("sql statement") 

確保DSN是存在於sql.ini文件。