これが私の簡単なテストスクリプトです。基本的な選択ステートメントを実行しようとしています。チュートリアルで基本的な部分を見つけました。
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
どんな助けでも大歓迎です!
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
受け取ったエラーは、IM002という名前のDSNセットアップがないことを示している可能性があります。 ODBC接続を直接テストして、正しく設定されていることを確認しましたか?適切なMicrosoft SQL Serverデータベースドライバーがインストールされていますか?