Quelqu'un peut-il m'orienter dans la bonne direction sur la façon d'ouvrir un fichier .mdb en python? J'aime normalement inclure du code pour démarrer une discussion, mais je ne sais pas par où commencer. Je travaille assez bien avec mysql avec python. Je me demandais s'il y avait un moyen de travailler avec des fichiers .mdb de la même manière?
Ci-dessous se trouve du code pour lequel j'ai écrit ne autre SO question .
Il nécessite le tiers module pyodbc .
Cet exemple très simple va se connecter à une table et exporter les résultats dans un fichier.
N'hésitez pas à développer votre question en répondant à vos besoins spécifiques.
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)
Cela ressemble à une question précédente:
La réponse devrait être utile.
Il y a la bibliothèque meza de Reuben Cummings qui peut lire les bases de données Microsoft Access via mdbtools .
# 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
>>> from meza import io
>>> records = io.read('database.mdb') # only file path, no file objects
>>> print(next(records))
Table1
Table2
…
Pour une solution qui fonctionne sur n'importe quelle plate-forme capable d'exécuter Java, envisagez d'utiliser Jython ou JayDeBeApi avec le pilote JDBC CanAccess . Pour plus de détails, voir la question connexe
Lire une base de données Access dans Python sur une plate-forme non Windows (Linux ou Mac)
En plus de la réponse de bernie, j'ajouterais qu'il est possible de récupérer le schéma de la base de données. Le code ci-dessous répertorie les tables (b [2] contient le nom de la table).
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
Le code ci-dessous répertorie toutes les colonnes de toutes les tables:
colDesc = list(cur.columns())