web-dev-qa-db-ger.com

pyodbc + MySQL + Windows: Der Name der Datenquelle wurde nicht gefunden und es wurde kein Standardtreiber angegeben

Ich versuche, eine Verbindung zu MySQL 5.6 auf einem Windows Server 2008 R2-Localhost mit Pyodbc herzustellen. Ich habe die vollständige Installation für die MySQL-Instanz auf dem localhost verwendet, einschließlich des Connectors ODBC. Ich habe eine wunderbare Verbindung zu einer Remote-SQL Server-Instanz, aber für mein Leben kann ich es nicht dazu bringen, eine Verbindung zur lokalen MySQL-Instanz herzustellen. Ich benutze diesen Leitfaden von connectionstrings.com als Referenz.

Hier ist ein Code:

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

Hier ist der Fehler:

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

Ich habe alles versucht, vom Hinzufügen von Provider=MSDASQL; bis zum Ändern von ANSI in UNICODE in der Verbindungszeichenfolge. Irgendwelche Vorschläge?

7
sct.chang

Ich hatte ein ähnliches Problem. Ich benutze Windows 8 und MySQL. 

Die Art und Weise, wie ich das Problem gelöst habe, bestand darin, in mein Problem einzugehen 

systemsteuerung> Systeme und Sicherheit> Verwaltung> ODBC-Datenquellen 

Je nach Computer die 32-Bit- oder 64-Bit-Version. 

Dann klicken Sie auf die System-DNS-Datei. Wenn Sie keinen MySQL-Treiber sehen, müssen Sie auf HINZUFÜGEN klicken. Es wird eine Liste angezeigt. Wählen Sie aus dieser Liste den MySQL-Treiber aus. 

Für mich war es MySQL ODBC 5.3 ANSI (sie haben auch einen Unicode-Treiber). Klicken Sie auf Fertig stellen. Sobald Sie das getan haben, müssen Sie Ihre Verbindungslinie in Ihrem Code in den entsprechenden Treiber ändern, den Sie gerade ausgefüllt haben. 

Ex:

def create_mysql_conn():

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

Dies sollte funktionieren oder zumindest mein Verbindungsproblem gelöst haben, da ich mit allem, was ich versuchte, verschiedene Fehler bekam. Dies löste das Problem für mich. 

15
Thomas Johnson

In Win64 gibt es zwei ODBC-Umgebungen: 32 und 64 Bit, und Sie können mit Python 32 Bit oder Python 64 Bit arbeiten. Prüfen Sie, welche Python-Version Sie verwenden, und verwenden Sie dann die richtige Version von odbcad32.exe (32-Bit-Version befindet sich im Verzeichnis SysWoW64), um SystemDSN zu erstellen. Mit SystemDSN können Sie prüfen, ob Sie eine Verbindung zur Datenbank herstellen können. Versuchen Sie dann, eine Verbindung zu DB aus Python-Code herzustellen.

Sie können ODBC Datenquellen, die für pyodbc verfügbar sind, über mein Code-Rezept auflisten: https://code.activestate.com/recipes/578815-printing-list-of-odbc-data-source-with-pyodbc -mod/

6
Michał Niklas

Wechseln Sie zu Verwaltung und den Datenquellen ODBC. Sie sollten auf die DNS-Datei klicken. In den meisten Fällen werden Microsoft Access und Excel als die einzigen verfügbaren Datenquellen angezeigt. Sie müssen also Ihren SQL Server hinzufügen. Meines war SQL Server 2008 R2, und bisher hat es funktioniert.

0
gbade_

Für den genannten Fehler "pyodbc.Error: ('IM002', '[IM002] [Microsoft] [ODBC-Treiber-Manager] Datenquellenname nicht gefunden und kein Standardtreiber angegeben (0) (SQLDriverConnect)')"

Ich habe die "Microsoft Access Database Engine 2010 Redistributable 64-Bit" installiert, da ich ein 64-Bit-System habe, und dann den DSN in das Verzeichnis der MS Access-Datenbank eingefügt, und es funktioniert jetzt. Hier ist der Link des Videos, um zu erfahren, wie Sie einen DSN erstellen und eine Verbindung zu Python herstellen. https://www.youtube.com/watch?v=zw9P2wSnoIo

0
viveklande