web-dev-qa-db-ja.com

pypyodbcを使用したSQLServerへの接続

Python2.7。I pymssqlで失敗 でユニコードをSQL Serverに送信する必要があります。現在、pypyodbcを機能させようとしています(対照的に) to pyodbc)、それが与えるように 動作するユニコードの例 。問題は、例の接続文字列が私が認識しているもののように見えないことです。私は これを調べました 、そして少し試行錯誤した後、この文字列を作成しました:

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を使用して正常に接続するために資格情報を使用したので、資格情報が正しいことを知っています。何が足りないのですか?

9
mscharf

接続文字列のserveruidpwd、およびdatabase属性から一重引用符を削除します。

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

pypyodbcpyodbcとの互換性について言及しているので、少し時間を取って pyodbc接続文字列docs および pyodbc.connect() の例を確認してください。私はpyodbcでこの構文を使用します:

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

接続文字列にポート番号(1433)を残しておくと、Linuxクライアント(Windows 7ではない)からエラーが発生しました。おそらく構成の問題ですが、追跡する時間がありませんでした。

他の誰かを助ける場合に備えて、これをそこに置いてください。

3
peter n