la façon de traiter les fichiers d'accès .mdb avec python
Question
point que quelqu'un peut me dans la bonne direction sur la façon d'ouvrir un fichier .mdb en python? Je normalement comme y compris un code pour commencer une discussion, mais je ne sais pas où commencer. Je travaille avec MySQL un peu de juste avec python. Je me demandais s'il y a un moyen de travailler avec des fichiers .mdb de la même manière?
La solution
Voici un code que j'ai écrit pour une autre question SO .
Elle exige la 3ème partie pyodbc Module .
Cet exemple très simple se connecte à une table et d'exporter les résultats dans un fichier.
Ne hésitez pas à élargir votre question avec des besoins plus spécifiques que vous pourriez avoir.
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)
Autres conseils
ressemble à une question précédente:
- Que dois-je lire Microsoft bases de données Access en utilisant Python?
- http: // code. activestate.com/recipes/528868-extraction-and-manipulation-class-for-microsoft-ac/
Réponse il devrait être utile.
Il y a la bibliothèque Meza par Reuben Cummings qui peut lire les bases de données Microsoft Access par mdbtools .
Installation
# 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
Utilisation
>>> from meza import io
>>> records = io.read('database.mdb') # only file path, no file objects
>>> print(next(records))
Table1
Table2
…
En plus de la réponse de bernie, je voudrais ajouter 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())
Pour une solution qui fonctionne sur toute plate-forme qui peut fonctionner Java, envisagez d'utiliser Jython ou JayDeBeApi avec UCanAccess de pilote JDBC. Pour plus de détails, voir la question connexe
Lire une base de données Access en Python sur la plate-forme non Windows (Linux ou Mac)