texto - cómo lidiar con los archivos de acceso.mdb con python
leer archivos en python (5)
¿Puede alguien señalarme en la dirección correcta sobre cómo abrir un archivo .mdb en python? Normalmente me gusta incluir algún código para comenzar una discusión, pero no sé por dónde empezar. Trabajo con mysql un poco con Python. Me preguntaba si hay una forma de trabajar con archivos .mdb de forma similar.
A continuación se muestra un código que escribí para otra pregunta SO .
Requiere el módulo pyodbc de terceros.
Este ejemplo muy simple se conectará a una tabla y exportará los resultados a un archivo.
Siéntase libre de ampliar su pregunta con las necesidades más específicas que pueda tener.
import csv, pyodbc
# set up some constants
MDB = ''c:/path/to/my.mdb''; DRV = ''{Microsoft Access Driver (*.mdb)}''; PWD = ''pw''
# connect to db
con = pyodbc.connect(''DRIVER={};DBQ={};PWD={}''.format(DRV,MDB,PWD))
cur = con.cursor()
# run a query and get the results
SQL = ''SELECT * FROM mytable;'' # your query goes here
rows = cur.execute(SQL).fetchall()
cur.close()
con.close()
# you could change the mode from ''w'' to ''a'' (append) for any subsequent queries
with open(''mytable.csv'', ''wb'') as fou:
csv_writer = csv.writer(fou) # default field-delimiter is ","
csv_writer.writerows(rows)
Además de la respuesta de Bernie, agregaría que es posible recuperar el esquema de la base de datos. El siguiente código enumera las tablas (b [2] contiene el nombre de la tabla).
con = pyodbc.connect(''DRIVER={};DBQ={};PWD={}''.format(DRV,MDB,PWD))
cur = con.cursor()
tables = list(cur.tables())
print ''tables''
for b in tables:
print b
El siguiente código enumera todas las columnas de todas las tablas:
colDesc = list(cur.columns())
Esto se ve similar a una pregunta anterior:
- ¿Qué necesito para leer las bases de datos de Microsoft Access usando Python?
- http://code.activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/
La respuesta debería ser útil.
Hay una biblioteca Meza de Reuben Cummings que puede leer las bases de datos de Microsoft Access a través de mdbtools .
Instalación
# The mdbtools package for Python deals with MongoDB, not MS Access.
# So install the package through `apt` if you''re on Debian/Ubuntu
$ sudo apt install mdbtools
$ pip install meza
Uso
>>> from meza import io
>>> records = io.read(''database.mdb'') # only file path, no file objects
>>> print(next(records))
Table1
Table2
…
Para una solución que funciona en cualquier plataforma que pueda ejecutar Java, considere usar Jython o JayDeBeApi junto con el controlador UCanAccess JDBC. Para más detalles, vea la pregunta relacionada
Lea una base de datos de Access en Python en una plataforma que no sea de Windows (Linux o Mac)