2016-05-11 5 views
2

Я использую pyodbc для подключения SQL Server. Я создал строку подключения, как это:Использование ошибки pyodbc cause: имя источника данных не найдено и не указан по умолчанию драйвер

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.

Для получения дополнительной информации у меня есть окна 8.1 64bit и я установил python версии 3.5.1 32bit, и я загрузил pyobbc с http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyodbc (pyodbc-3.0.10-cp35-none-win32.whl). Но когда я пытаюсь подключить его вызвать эту ошибку:

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' (имя базы данных SQL Server, а не ODBC DSN). Попробуйте использовать строку соединения с 'SQLO' вместо' TrainQuizDB' и посмотрите, работает ли это лучше. –

+0

@GordThompson Я создаю ODBC DSN только для проверки соединения. В коде я хочу напрямую подключить db. (сервер, имя db, имя пользователя, passwork) –

ответ

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')