txt texto modificar leer importar gestion escribir ejercicios desde crear archivos python ms-access

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())



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)