2016-05-11 11 views
2

私はpyodbcを使用してSQL Serverに接続しています。pyodbc原因エラーを使用しています:データソース名が見つかりません。デフォルトのドライバが指定されていません

from sqlalchemy import Table, Column, databases, Integer, String, ForeignKey, create_engine 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import session 
engine = create_engine('mssql+pyodbc://sa:[email protected]/TrainQuizDB') 
engine.connect() 

TrainQuizDBは、私は、SQL Serverで作成されたデータベース名です:私はこのような接続文字列を作成していました。

私はWindows 8.1 64bitを持っており、Pythonバージョン3.5.1 32bitをインストールしました。そして、http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyodbc(pyodbc-3.0.10-cp35-none-win32.whl)からpyodbcをダウンロードしました。 しかし、私はそれがこのエラーを引き起こす接続しよう:

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

はまた、私はODBCデータソースに接続をテストして、それが成功しました。

ODBC Connection

+0

あなたのスクリーンショットは、DSNを作成したことを示しています「SQLO」という名前が付けられましたが、接続文字列には「TrainQuizDB」(ODBC DSNではなくSQL Serverデータベースの名前)が含まれていました。 'TrainQuizDB'ではなく' SQLO'で接続文字列を使ってみて、それがうまくいくかどうか確認してください。 –

+0

@ GordThompson私は接続をテストするためだけにODBC DSNを作成します。私はdbに直接接続したいコードです。 (サーバー、db名、ユーザー名、パスワーク) –

答えて

1

relevant section of the SQLAlchemy documentationで述べたように:

Hostname-based connections are not preferred, however are supported. The ODBC driver name must be explicitly specified

だから、あなたはあなたの接続文字列にドライバ名を追加する必要があります。

engine = create_engine('mssql+pyodbc://sa:[email protected]/TrainQuizDB?driver=Microsoft+ODBC+Driver+for+SQL+Server') 
関連する問題