web-dev-qa-db-fra.com

Bibliothèque MS Access pour python

Existe-t-il une bibliothèque pour utiliser la base de données MS Access en python? Le module win32 n'est pas aussi simple que la bibliothèque MySQL. Existe-t-il un moyen plus simple d'utiliser MS Access avec Python?

26
Vicky

Selon ce que vous voulez faire, pyodbc pourrait être ce que vous recherchez.

import pyodbc

def mdb_connect(db_file, user='admin', password = '', old_driver=False):
    driver_ver = '*.mdb'
    if not old_driver:
        driver_ver += ', *.accdb'

    odbc_conn_str = ('DRIVER={Microsoft Access Driver (%s)}'
                     ';DBQ=%s;UID=%s;PWD=%s' %
                     (driver_ver, db_file, user, password))

    return pyodbc.connect(odbc_conn_str)

conn = mdb_connect(r'''C:\x.mdb''')  # only absolute paths!

Remarque: vous pouvez télécharger librement le redistribuable nouveau-pilote , si vous n'avez pas MSOffice installé.

39
stephan

Je ne pense pas que win32 soit difficile. Essayez d'utiliser son module odbc. Exemple de code fonctionnant avec ODBC et la base de données PostgreSQL:

import odbc

def get_pg_ver(db_alias):
    connection = odbc.odbc(db_alias)
    try:
        cursor = connection.cursor()
        cursor.execute('SELECT version()')
        for row in cursor.fetchall():
            print row[0]
    finally:
        connection.close()

get_pg_ver('odbc_name/user/passwd')

C'est très similaire pour chaque pilote db que j'ai utilisé dans Python et Jython (je travaille avec PostgreSQL, Oracle et Informix).

12
Michał Niklas

Vous pouvez utiliser pypyodbc pour créer facilement un fichier MDB Access vide sur la plate-forme win32, et également compacter les fichiers MDB Access existants.

Cela peut être aussi simple que:

import pypyodbc
pypyodbc.win_create_mdb( "D:\\Your_MDB_file_path.mdb" )

De plus, en tant que bibliothèque dbi 2.0 ODBC, pypyodbc est hautement compatible avec pyodbc, vous pouvez effectuer des requêtes de base de données SQL comme SELECT, INSERT, UPDATE avec la bibliothèque.

Voici l'intégralité Tutoriel sur le support Access de pypyodbc.

Avertissement: je suis le développeur de pypyodbc.

7
pypyodbc

J'ai récemment réussi à utiliser le module adodbapi de pywin32.

L'extrait suivant a été extrait du site Web this :

import adodbapi

database = "db1.mdb"
constr = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=%s'  % database
tablename = "address"

# connect to the database
conn = adodbapi.connect(constr)

# create a cursor
cur = conn.cursor()

# extract all the data
sql = "select * from %s" % tablename
cur.execute(sql)

# show the result
result = cur.fetchall()
for item in result:
    print item

# close the cursor and connection
cur.close()
conn.close()
3
gdw2