2015-02-02 2 views
4

pyodbc를 사용하여 Windows Server 2008 R2 로컬 호스트에서 MySQL 5.6에 연결하려고합니다. ODBC 커넥터를 포함하여 localhost의 MySQL 인스턴스 전체 설치를 사용했습니다. 나는 그것을 원격 SQL Server 인스턴스에 아름답게 연결시켜 주지만, 내 인생에서 나는 그것을 로컬 MySQL 인스턴스에 연결할 수 없다. 이 guide from connectionstrings.com을 참조로 사용하고 있습니다. 여기pyodbc + MySQL + Windows : 데이터 소스 이름을 찾을 수없고 기본 드라이버가 지정되지 않았습니다.

import pyodbc 

def create_mssql_conn(): 
    return pyodbc.connect(r'Driver={SQL Server};Server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;') 

def create_mysql_conn(): 
    return pyodbc.connect(r'Provider=MSDASQL;Driver={MySQL ODBC 5.6 UNICODE Driver};Server=127.0.0.1;Database=ecomm;User=root;[email protected]$$w0rd;Option=3;') 

# conn = create_mssql_conn() # This one works 
conn = create_mysql_conn() # This one breaks 
cursor = conn.cursor() 
cursor.execute('SELECT * FROM inventory') 

while 1: 
    row = cursor.fetchone() 
    if not row: 
     break 
    print row 

를 오류입니다 :

여기에 일부 코드의

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

내가 연결 문자열에 UNICODEANSI 변화에 Provider=MSDASQL;을 추가하는 모든 것을 시도했다. 어떤 제안?

+2

설치된 MySQL Connector/ODBC의 "bitness"가 사용중인 Python 버전의 "bitness"와 일치하는지 확인하십시오. 둘 다 64 비트이거나 둘 다 32 비트 여야합니다. 또한 [MySQL Connector/Python] (http://dev.mysql.com/downloads/connector/python/)을 사용해 보셨습니까? –

+0

재미있게 파이썬 커넥터를 제안해야합니다. 마감 시간을 정하기 위해했던 시간 제약 때문에. 필자는 pyodbc를 SQL Server에서 데이터를 가져 오기 위해 이미 가져 왔기 때문에 작업하기를 원했습니다. 잠시 후 '비트'사업에 대해 살펴볼 것입니다. –

답변

5

Win64에는 32 비트와 64 비트의 두 가지 ODBC 환경이 있으며 파이썬 32 비트 또는 파이썬 64 비트를 사용할 수 있습니다. 사용하는 Python의 버전을 확인한 다음 odbcad32.exe (32 비트 버전은 SysWoW64 디렉토리에 있음)의 올바른 버전을 사용하여 SystemDSN을 만듭니다. SystemDSN을 사용하면 데이터베이스에 연결할 수 있는지 확인할 수 있습니다. 그런 다음 Python 코드에서 DB에 연결하십시오.

당신은 내 코드 조리법을 통해 pyodbc 사용할 수 ODBC 데이터 소스를 나열 할 수 있습니다 https://code.activestate.com/recipes/578815-printing-list-of-odbc-data-sources-with-pyodbc-mod/

+0

파일의 전체 경로는'C : \ Windows \ SysWOW64 \ odbcad32.exe'라고 생각합니다. – Thomas

8

을 나는 비슷한 문제가 발생했다. 나는 창 8, mysql을 사용하고있다.

내가 문제를 해결하는 방법

는 컴퓨터에 따라 내

control panel>Systems and Security>Administrative Tools.>ODBC Data Sources

중 하나를 32 비트 또는 64 비트 버전으로 이동하여이었다.

그런 다음 시스템 DNS 파일을 클릭하십시오. MySQL 드라이버가 표시되지 않으면 추가를 클릭해야합니다. 목록에서 MySQL 드라이버를 선택합니다.

MySQL ODBC 5.3 ANSI (나에게는 유니 코드 드라이버가 있습니다). 완료를 클릭하십시오. 일단 그렇게하면 코드에서 연결선을 방금 작성한 해당 드라이버로 변경해야합니다.

예는 :

def create_mysql_conn(): 

return pyodbc.connect(r'Driver={MySQL ODBC 5.3 ANSI Driver};Server=MSSQLSRV;Database=ecomm;Trusted_Connection=yes;') 

이 작업을해야합니다, 또는 내가 시도 다 서로 다른 오류의 모든 종류를 받고 있었기 때문에 적어도 내 연결 문제를 해결했다. 이것이 나를 위해이 문제를 해결 한 것입니다.

0

관리 도구 및 ODBC 데이터 원본으로 이동하십시오. DNS 파일을 클릭해야합니다. 대부분 Microsoft Access를 사용할 수 있으며 사용 가능한 유일한 데이터 소스로 간주되므로 SQL Server를 추가해야합니다. 저는 SQL Server 2008 R2를 사용해 왔으며 지금까지 성공했습니다.