2012-05-11 122 views
5

Estoy tratando de usar pyodbc para acceder a .mdb en Ubuntu. He basado mi progreso hasta ahora en este enlaceUsando una base de datos de Access (.mdb) con Python en Ubuntu

Query crashes MS Access

He instalado pyodbc, unixodbc y unixodbc-dev

Mi código es el siguiente:

import csv 
import pyodbc 

MDB = 'URY.mdb' 
DRV ='Microsoft Access Driver (*.mdb)' 
PWD = 'pass' 

conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD)) 
curs = conn.cursor() 

Cuando ejecutarlo, recibo este mensaje de error:

Traceback (most recent call last): 
    File "mdbscraper.py", line 8, in <module> 
    conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD)) 
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found,   and no default driver specified (0) (SQLDriverConnect)') 

¿Alguien h ¿Alguna idea? Cualquier ayuda sería muy apreciada

¡Gracias!

+0

No estoy familiarizado con Linux, pero en Windows, este error significaría que no configuró una conexión ODBC en el Panel de control -> Herramientas administrativas -> Conexiones ODBC. Y pasaría el Nombre del origen de datos (DNS) en la conexión, no el nombre del archivo (que está en el DNS). – HardCode

+0

Creo que porque estoy usando .mdb es todo local, por lo que no necesito un DNS. Suena bien? Lo baso en el ejemplo que se encuentra en la parte superior de esta página https://code.google.com/p/pyodbc/wiki/ConnectionStrings – mythander889

+0

Creo que aún necesita instalar un controlador ODBC para MS Access. Easysoft vende uno. http://www.easysoft.com/products/data_access/odbc-access-driver/index.html Supuestamente mdbtools incluye uno pero se describe como limitado. http://mdbtools.sourceforge.net/install/x90.htm – HansUp

Respuesta

0
import pyodbc 
DBfile = '/data/MSAccess/Music_Library.mdb' 
conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ='+DBfile) 
cursor = conn.cursor() 
SQL = 'SELECT Artist, AlbumName FROM RecordCollection ORDER BY Year;' 

for row in cursor.execute(SQL): # cursors are iterable 
print row.Artist, row.AlbumName 

cursor.close() 
conn.close() 

está el ejemplo .. Oficial de uso ...

3

Por lo que sé este controlador "Microsoft Access Driver (* .mdb)" sólo está disponible en un servidor Microsoft, ya que eres en ubuntu, no funcionará.

+0

Sí, estoy con esta respuesta hasta el momento. Por favor, comparta si alguien tiene la solución. –

Cuestiones relacionadas