2013-03-25 4 views
19

다음은 간단한 테스트 스크립트입니다. 그냥 기본 선택 진술을하려고합니다. 튜토리얼에서 기본 비트를 찾았습니다.SQLAlchemy가 mssql 데이터베이스에 연결할 수 없습니다.

from sqlalchemy import * 

db = create_engine('mssql+pyodbc://user:[email protected]_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) 

한 시간 쯤 지나서 몇 가지 해결책을 시도한 후에, 나는 시작했을 때보 다 더 가까이에서 해결할 수 있습니다. 바라 건데 ... 난 그냥 어딘가에 단순한 실수를했지만, 나는 그것을 찾을 수있어

여기에 내가

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

어떤 도움이 많이 주시면 감사하겠습니다

받고 있어요 오류입니다!

답변

24

URL에 지정되지 않은 경우 mssql+pyodbc 방언의 기본 드라이버는 "SQL Server"[1]입니다. 즉, /etc/unixODBC/odbcinst.ini에서 다음과 같이 읽는 부분이 필요 의미 : 당신이 관리 도구을 열면 때문에, 그것은 Windows에서 "자동으로"작동

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

을 ->데이터 소스 (ODBC), 드라이버 탭에서 "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 

를 그리고, 당신은 단지 값의 URL에 driver 쿼리 문자열 매개 변수를 추가해야 섹션 이름과 일치하는 FreeTDS를 가진

샘플 URL : 공식 드라이버

mssql+pyodbc://user:[email protected]_address/database_name?driver=FreeTDS 

샘플 URL :

mssql+pyodbc://user:[email protected]_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

내가 직접 ODBC 연결을 테스트하는 방법에 대한 갈 것이라고 어떻게
+0

+1 훌륭한 설명. 나는 이것에 비틀 거리기까지 너무 많은 다른 것을 시도했다. 내 문제는 그 여분의 매개 변수없이 Windows 서버에서 잘 작동하는대로 연결 문자열에 드라이버 이름을 추가하여 코드를 변경할 수 없었습니다. 그래서 나는'/ etc/odbcinst.ini'에'[SQL Server]'라는 또 다른 엔트리를 만들고'[SQL Server Native Client 11.0] '아래에 있던 모든 것을 내 항목과 voila에 복사했습니다! 모든 것이 작동합니다 ... –

+3

SQLAlchemy는 Windows에서도 기본 odbc 드라이버를 찾을 수 없습니다. "? driver = SQL + Server"를 추가하면 내 문제가 해결되었습니다.등호 이름은 관리 도구/데이터 원본/드라이버 아래에있는 드라이버 이름과 일치해야합니다. – Matej

+0

최신 MS 드라이버 (v13)는 https://msdn.microsoft.com/en-us/에서 찾을 수 있습니다. 라이브러리/hh568451 % 28v = sql.110 % 29.aspx 드라이버 관리자를 설치하고 모든 종속성이 있는지 확인한 다음 드라이버를 설치하십시오. – iled

1

받는 오류는 IM002라는 이름의 DSN 설치가 없음을 나타낼 수 있습니다. ODBC 연결을 직접 테스트하여 올바르게 설정되었는지 확인 했습니까? 적절한 Microsoft SQL Server 데이터베이스 드라이버를 설치 했습니까?

+0

? 필자는 이전에 pyodbc가있는 창에서 파이썬 스크립트를 사용하여 연결 했으므로 제대로 작동합니다. 나는 또한 mssql db 드라이버가 내 리눅스 시스템에 있다고 믿는다. 그러나 나는 틀릴 수도있다. 이 pyodbc 및 unixodbc입니까? – Scott

+0

IM002는 오류 코드 일뿐입니다. DSN과 아무 관련이 없습니다. – sayap

관련 문제