webentwicklung-frage-antwort-db.com.de

Pyodbc-Fehler Datenquellenname nicht gefunden und kein Standardtreiber angegeben

Ich versuche, pyobdc zum Lesen von Daten aus einer paradoxen Datenbank zu verwenden, und ich bekomme beim Versuch, eine Verbindung zur Datenbank herzustellen, den folgenden Fehler:

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

Ich habe versucht, neue DNS-Links für die Datenbank zu erstellen, was aber bisher nicht geholfen hat.

Meine Systemlinks sehen folgendermaßen aus:

This is what the system DNS looks like

Mein Code lautet:

import os
import sys
import time
import pyodbc

LOCATION = "c:\Users\Marcello\Desktop\DATA\ScorMonitor.db"

cnxn = pyodbc.connect(r"Driver={{Microsoft Paradox Driver (*.db )}};Fil=Paradox 5.X;DefaultDir={0};Dbq={0}; CollatingSequence=ASCII;")
cursor = cnxn.cursor()
cursor.execute("select last, first from test")
row = cursor.fetchone()
print row
14
Suit Boy Apps

Zwei Gedanken, was Sie überprüfen sollten:

1) Ihre Verbindungszeichenfolge ist falsch. Es gibt eine Möglichkeit, eine bekannte, gute Verbindungszeichenfolge direkt aus dem Administrationsprogramm ODBC zu beziehen (aus http://www.visokio.com/kb/db/dsn-less-odbc ). Bei diesen Anweisungen wird davon ausgegangen, dass Sie eine MDB verwenden. Der gleiche Prozess funktioniert jedoch für eine Paradox-Datei

  • Öffnen Sie auf einem typischen Client-PC Systemsteuerung -> Verwaltung -> Datenquellen.
  • Wählen Sie die Registerkarte Datei-DSN und klicken Sie auf Hinzufügen.
  • Wählen Sie den entsprechenden Treiber aus (z. B. "Microsoft Access-Treiber (* .mdb)") und klicken Sie auf Weiter
  • Klicken Sie auf Durchsuchen und wählen Sie den Ort, an dem Sie die .dsn-Datei speichern möchten (dies ist eine temporäre Datei, die Sie später löschen werden).
  • Klicken Sie auf Weiter und dann auf Fertig stellen.
  • Sie erhalten den herstellerspezifischen Setup-Dialog ODBC. Bei Microsoft Access müssen Sie beispielsweise nur auf Auswählen klicken und nach einer vorhandenen MDB-Datei suchen, bevor Sie auf OK klicken.
  • Navigieren Sie zum Speicherort der .dsn-Datei und öffnen Sie sie mit dem Editor.

In der DSN-Datei sehen Sie möglicherweise etwas Ähnliches:

[ODBC]
DRIVER=Microsoft Access Driver (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\
DBQ=C:\db1.mdb

So konvertieren Sie den obigen Befehl in die vollständige Verbindungszeichenfolge:

  1. Lassen Sie die erste [ODBC] -Zeile aus 
  2. Setzen Sie geschweifte Klammern um alle Werte, die Leerzeichen enthalten 
  3. Setzen Sie alle Name = Wert-Paare in eine Zeile, getrennt durch Semikolons.

Dadurch erhalten Sie die vollständige Verbindungszeichenfolge. In diesem Beispiel wird die Zeichenfolge wie folgt:

DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;axScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\;DBQ=C:\db1.mdb

2) 32/64-Bit-Nichtübereinstimmung. Ich hatte Probleme beim Mischen von 32-Bit-Python mit 64-Bit-Treibern oder umgekehrt. Möglicherweise möchten Sie die Reihenfolge Ihres Python-Interpreters und des Datenbanktreibers überprüfen.

20
Chad Kennedy

Die Verknüpfung zum Einstellen von ODBC -Datenquellen kann auf die 32-Bit-Datenquellen statt auf 64-Bit verweisen.

Gehen Sie zu Systemsteuerung -> Verwaltungstools -> Datenquellen auswählen (ODBC) -> klicken Sie dann mit der rechten Maustaste auf die Datei -> Gehen Sie zu Eigenschaften -> in der Registerkarte Verknüpfung -> ändern Sie den Pfad von %windir%\System32\odbcad32.exe in 

%windir%\SysWOW64\odbcad32.exe

1
neogeomat

Vielen Dank für die Frage, ich hatte ein ähnliches Problem, und diese Frage und die Antworten haben mir geholfen, zu dem zu gelangen, was ich brauchte ... Das Problem war für mich ein Missverhältnis zwischen 64-Bit-Python und 32-Bit ODBC Treiber unter Windows 10 (wie Chad Kennedy vorgeschlagen hat). Ich führe eine vollständig aktualisierte Edition von Fall Creator aus und ließ Microsoft Office Pro 2016 installieren. Das MS Office-Installationsprogramm verwendet standardmäßig immer noch eine 32-Bit-Installation (lassen Sie mich nicht anfangen ...). Zum Installationszeitpunkt werden Sie nicht danach gefragt. Stellen Sie sich also meine Überraschung vor, als ich entdeckte, dass ich 32-Bit-Office ausführte . Aus diesem Grund wird der 32-Bit-Treiber ODBC für MS Access installiert. Es gibt einen winzigen nicht wahrnehmbaren Link, auf den Sie im MS Office-Installationsprogramm klicken können, um die 64-Bit-Installation zu erzwingen.

Eine 64-Bit-Python-Installation funktioniert nicht mit dem 32-Bit-Treiber von Microsoft Access ODBC. Microsoft lässt Sie den 64-Bit-Treiber ODBC nicht installieren, wenn Sie über 32-Bit-MS Office verfügen auf der Maschine installiert.

Die Lösung bestand darin, MS Office UNINSTALLIEREN und erneut zu installieren, indem der kleine Link im Installationsdialogfeld verwendet wurde, um die Installation als 64-Bit-Datei anzuweisen. Keine Sorge, es speichert alle Ihre letzten Dateien und Einstellungen sowie E-Mail-Konten in Outlook. Sobald dies erledigt war, hatte ich den 64-Bit-Treiber ODBC und mein Python-Code war ohne weitere Probleme mit der Datenbank verbunden.

1
Grimravus

Dieses Problem kann mit Office und Python Interpreter mit derselben Bitkonfiguration gelöst werden. Aber es stimmt, ich hatte 64-Bit-Office und Python und es funktioniert nicht. ..

Hier ist die Lösung.

Es gibt tatsächlich zwei (2) verschiedene Access ODBC Treiber von Microsoft:

  1. Microsoft Access-Treiber (* .mdb)

    Microsoft Access-Treiber (* .mdb) - Dies ist der ältere 32-Bit-Treiber "Jet" ODBC). Er ist als Standardbestandteil einer Windows-Installation enthalten. Er funktioniert nur mit .mdb ( Es handelt sich nicht um .accdb) -Dateien, sondern um offiziell veraltete Dateien.

  2. Microsoft Access-Treiber (* .mdb, * .accdb)

    Microsoft Access-Treiber (* .mdb, * .accdb) - Dies ist der neuere "ACE" ODBC) -Treiber. Er ist nicht in Windows enthalten, gehört jedoch normalerweise zu Microsoft Office Es ist auch als kostenloses, eigenständiges "weiterverteilbares" Installationsprogramm für Computer ohne Microsoft Office verfügbar. Es gibt separate 64-Bit- und 32-Bit-Versionen der Access Database Engine (und der Treiber) für "ACE" Entweder die 64-Bit-Version oder die 32-Bit-Version ist installiert. (Es ist möglich, beide Versionen auf demselben Computer zu erzwingen, dies wird jedoch nicht empfohlen, da dies Office-Installationen "beschädigen" kann. Wenn Sie also bereits über Microsoft Office verfügen Es wird dringend empfohlen, dass Sie eine Python Umgebung verwenden, die der "Bitness" der Office-Installation entspricht.)

Der einfachste Weg, um zu überprüfen, ob einer der Microsoft Access ODBC Treiber für Ihre Python Umgebung unter Windows) verfügbar ist, ist, dies zu tun

pyodbc importieren

[x für x in pyodbc.drivers () if x.startswith ('Microsoft Access Driver')]

Wenn Sie eine leere Liste sehen, verwenden Sie 64-Bit Python und müssen die 64-Bit-Version des "ACE" -Treibers installieren. Wenn Sie nur ['Microsoft Access Driver ( * .mdb) '] und Sie müssen mit einer .accdb-Datei arbeiten, dann müssen Sie die 32-Bit-Version des "ACE" -Treibers installieren.

In diesem Link können Sie Ihren Treiber herunterladen LINK

Infoquelle

Grüße!

0
Mecaxis14