2013-04-15 132 views
8

我需要使用Python 2.7將unicode發送到SQL Server。我failed with pymssql。我現在試圖讓pypyodbc工作(而不是pyodbc),因爲它給出working unicode examples。問題在於示例中的連接字符串看起來不像我認識的任何東西。我看着this,並且,一個小試驗和錯誤之後,建造這個字符串:使用pypyodbc連接到SQL Server

conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='MyPassword';DATABASE='db'") 

回來一個DatabaseError集中在連接字符串:

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs) 
---> 2 conn = pypyodbc.connect("DRIVER={SQL Server};SERVER='MyServer';UID='me';PWD='password';DATABASE='db'") 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in __init__(self, connectString, autocommit, ansi, timeout, unicode_results, readonly, **kargs) 
---> 2273   self.connect(connectString, autocommit, ansi, timeout, unicode_results, readonly) 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in connect(self, connectString, autocommit, ansi, timeout, unicode_results, readonly) 
---> 2321   check_success(self, ret) 

C:\Anaconda\lib\site-packages\pypyodbc.pyc in ctrl_err(ht, h, val_ret, ansi) 
---> 919     raise DatabaseError(state,err_text) 

DatabaseError: (u'08001', u'[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.') 

我知道我的憑據是正確的,因爲我已經使用它們使用pymssql成功連接。我錯過了什麼?與pyodbc

conn = pypyodbc.connect("DRIVER={SQL Server};SERVER=MyServer;UID=me;PWD=password;DATABASE=db") 

由於pypyodbc提到的兼容性,花一分鐘過目pyodbc connection string docspyodbc.connect()例子:

回答

15

從連接字符串的serveruidpwd,並且database屬性中刪除單引號。我用這個語法pyodbc:

cnxn = connect(driver='{SQL Server}', server='localhost', database='test', uid='me', pwd='me2') 
2

留出連接字符串中的端口號(1433),向我扔的錯誤從Linux客戶端(但不是Windows 7中)。這可能是一個配置問題,但我沒有時間去追逐它。

把它放在那裏,以防別人幫忙。