web-dev-qa-db-ja.com

SQLAlchemyはmssqlデータベースに接続できません

これが私の簡単なテストスクリプトです。基本的な選択ステートメントを実行しようとしています。チュートリアルで基本的な部分を見つけました。

from sqlalchemy import *

db = create_engine('mssql+pyodbc://user:pass@ip_address/database_name')    

db.echo = True 
metadata = MetaData(db)

users = Table('member', metadata, autoload=True)

def run(stmt):
    rs = stmt.execute()
    for row in rs:
        print row

s = users.select(users.c.fname == 'Bill')
run(s)

1時間ほど探し回っていくつかの解決策を試した後、私は始めたときほど解決に近づきません。うまくいけば、どこかで単純なエラーを犯しただけですが、それを見つけることができません...

ここに私が得ているエラーがあります

sqlalchemy.exc.DBAPIError: (Error) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') None None

どんな助けでも大歓迎です!

27
Scott

URLで指定されていない場合、mssql+pyodbc方言のデフォルトのドライバーは "SQL Server" [1]になります。つまり、/ etc/unixODBC/odbcinst.iniに次のようなセクションが必要です。

[SQL Server]
Driver=/path/to/library.so

Administrator Tools->データソース(ODBC)Driversタブの下に "SQL Server"という名前のエントリが見つかる可能性があります。

Linuxでは、FreeTDSドライバー、またはMicrosoftの公式ドライバー(これをお勧めします)を使用できます。

ドライバーをインストールすると、/ etc/unixODBC/odbcinst.iniに次のようになります。

[FreeTDS]
Driver=/usr/lib/libtdsodbc.so
Threading=1

[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/Microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1

次に、driverクエリ文字列パラメーターをセクション名と一致する値とともにURLに追加するだけです。

FreeTDSのサンプルURL:

mssql+pyodbc://user:pass@ip_address/database_name?driver=FreeTDS

公式ドライバーのサンプルURL:

mssql+pyodbc://user:pass@ip_address/database_name?driver=ODBC+Driver+11+for+SQL+Server

[1] https://bitbucket.org/sqlalchemy/sqlalchemy/src/aa3a8f016f3e4396d125b18b0510abdf72aa8af2/lib/sqlalchemy/dialects/mssql/pyodbc.py?at=default#cl-236

30
sayap

受け取ったエラーは、IM002という名前のDSNセットアップがないことを示している可能性があります。 ODBC接続を直接テストして、正しく設定されていることを確認しましたか?適切なMicrosoft SQL Serverデータベースドライバーがインストールされていますか?

1
Registered User