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?

Était-ce utile?

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

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())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top