Eine Verbindung zu MS Access 2007 (.accdb) Datenbank mit pyodbc
Bin ich auf Win7 x64, mit Python 2.7.1 x64. Ich bin Portierung einer Applikation erstellte ich in VC++ zu Python für pädagogische purpouses.
Die ursprüngliche Anwendung hat kein problem mit der Anbindung an die MS-Access-2007-format DB-Datei, indem Sie die folgende Verbindungszeichenfolge:
OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|DB.accdb");
Wenn ich jetzt versuche, die Verbindung zu dem DB-Datei (in C:\ diese Zeit) in Python mithilfe von pyodbc und die folgenden conenction string:
conn = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\DB.accdb;")
und egal, ob ich die OLE DB-provider oder nutze ich die Provider=MSDASQL;
wie bereits erwähnt hier (MS erwähnt, es ist nicht möglich für 64bit), bekomme ich immer die folgende Fehlermeldung:
pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)')
Was könnte dieses problem verursachen?
HINZUFÜGEN:
Ich habe mir in pyodbc docs genauer an und versuchte conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c:\\DB.accdb;")
- der gleiche Fehler. Das ist wirklich seltsam, da die pyodbc.dataSources() zeigt an, dass ich diesen Anbieter.
ADD2:
Ich habe versucht, win32com.client-Nutzung wie hier, um zu einer Verbindung mit der OLE DB - kein Erfolg. Scheint, dass es unmöglich ist, nichts funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie etwas wie das folgende anstelle der Verwendung der gleichen Zeichenfolge wie das für OLeDb:
"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\DB.accdb;"
Können Sie nicht in der Lage sein zu sprechen, um die Treiber direkt von Ihrem x64 Python-Anwendung: Access 2007, und die ACE-Treiber sind nur 32 bits.
Stattdessen Holen Sie sich die ACE-x64-Treiber für Access 2010, aber seien Sie vorsichtig, wenn Sie bereits Zugang haben oder die ACE-Treiber 32bit installiert, funktioniert es nicht.
Ich würde stick die 32bit Version von Python und der ACE-Treiber, wenn Sie erwarten, dass Ihre app auf anderen Systemen laufen: es wird nicht empfohlen, eine Mischung x64 und x86-Versionen von Office-tools und Treiber, Sie werden wahrscheinlich am Ende mit vielen Fragen, wenn Sie tun.
Wenn das Problem nicht mit der 32/64bit-mix, dann vielleicht diese Frage hat die Antwort, die Sie suchen.