python - libreria - Conexión a la base de datos de MS Access 2007(.accdb) con pyodbc
python microsoft access (1)
Estoy en Win7 x64, usando Python 2.7.1 x64. Estoy portando una aplicación que creé en VC ++ a Python para propósitos educativos.
La aplicación original no tiene problemas para conectarse al archivo DB en formato MS Access 2007 utilizando la siguiente cadena de conexión:
OleDbConnection^ conn = gcnew OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|DB.accdb");
Ahora, cuando trato de conectarme al mismo archivo DB (pongo C: / esta vez) en Python usando pyodbc y la siguiente cadena de conexión:
conn = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:/DB.accdb;")
, y no importa si conservo el proveedor OLEDB o si uso Provider=MSDASQL;
como se menciona aquí ( MS menciona que no está disponible para 64 bits ), sigo recibiendo el siguiente error:
pyodbc.Error: (''IM002'', ''[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnectW)'')
¿Qué podría causar este problema?
AÑADIR: he examinado más detenidamente los documentos pyodbc y conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c://DB.accdb;")
intentado conn = pyodbc.connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c://DB.accdb;")
- the mismo error. Esto es realmente extraño, ya que pyodbc.dataSources () muestra que tengo este proveedor.
ADD2: Probé el uso de win32com.client como aquí para conectarme usando OLE DB - sin éxito. Parece que es imposible, nada funciona.
Intente utilizar algo como lo siguiente en lugar de usar la misma cadena que la de OLeDb:
"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/DB.accdb;"
Es posible que no pueda hablar con el controlador directamente desde su aplicación Python x64: Access 2007 y su controlador ACE son solo de 32 bits.
En su lugar, obtenga el controlador ACE x64 para Access 2010 , pero tenga cuidado de que si ya tiene Access o el controlador ACE de 32 bits instalado, no funcionará.
Me quedaría con las versiones de 32 bits de Python y del controlador ACE si espera que su aplicación se ejecute en otros sistemas: no se recomienda mezclar las versiones x64 y x86 de las herramientas y controladores de Office, probablemente terminará con muchos de problemas si lo hace.Si el problema no está en la mezcla de 32/64 bits, entonces tal vez esta pregunta tenga la respuesta que busca .