0

次のコードがあります。

import pyodbc

cnxn = pyodbc.connect("DRIVER={SQL Server};"
                      +"SERVER=something.example.com;"
                      +"DATABASE=something;")

cursor = cnxn.cursor()

name=('Smith, Joe', )

cursor.execute('SELECT id FROM Users WHERE displayname=?', name)
rows = cursor.fetchall()

for row in rows:
        print row

コードは windows/python2.7 で必要に応じて実行されます。ただし、Linux で実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "/something/script.py", line 125, in <module>
    main()
  File "/something/script.py", line 77, in main
    +"DATABASE=something;")
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')

トレースバックは、DRIVERエントリが欠落していることを示しているようですが、そうではありません。これはバージョンの違いですか?pyodbc の問題は何ですか?

編集: /etc/odbcinst.ini の内容:

# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbc.so
Setup           = /usr/lib/libodbcpsqlS.so
Driver64        = /usr/lib64/psqlodbc.so
Setup64         = /usr/lib64/libodbcpsqlS.so
FileUsage       = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc5.so
Setup           = /usr/lib/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1
4

1 に答える 1

1

SQL Server 用の odbc ドライバーが構成されていません。インストールして構成する必要があります。unixodbcの Web ページのドライバ セクションでは、freetdsを提案していますが、代わりに、Microsoft 独自の実装を試すこともできます。

freedts は、 を使用してインストールできる必要がありますyum

基本的な構成は次のようになります。

/etc/odbcinst.ini:

[SQL Server]
Description = FreeTDS driver for SQL Server
Driver = /usr/lib/libtdsodbc.so
Driver64 = /usr/lib64/libtdsodbc.so

これで、すでに接続できるはずです。構成の詳細については、こちらを参照してください

編集:

あるいは、 python-tdspymssqlなど、Pythonから SQL サーバーに接続する他の方法もあります...

于 2013-08-20T21:56:37.353 に答える