2009-06-26 15 views
21

Czy istnieje biblioteka do korzystania z bazy danych MS Access w python? Moduł win32 nie jest tak prosty jak biblioteka MySQL. Czy istnieje prostszy sposób na użycie MS Access z Pythonem?MS Access biblioteka dla Pythona

Odpowiedz

32

W zależności od tego, co chcesz zrobić, pyodbc może być tym, czego szukasz.

import pyodbc 
db_file = r'''C:\x.mdb''' 
user = 'admin' 
password = '' 

odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb)};DBQ=%s;UID=%s;PWD=%s' %\ 
       (db_file, user, password) 
# Or, for newer versions of the Access drivers: 
odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;UID=%s;PWD=%s' %\ 
       (db_file, user, password) 

conn = pyodbc.connect(odbc_conn_str) 
+0

dzięki za koleś. Czuję się z tym wygodnie :) – Vicky

+1

@Cristian Ciupitu: dzięki za dodanie przykładowego kodu – stephan

+3

Właściwy kierunek na pewno. Jedyną zmianą, jaką musiałem wykonać, było '* .mdb, * .accdb' zamiast' * .mdb' – demongolem

10

Nie sądzę win32 jest trudne. Spróbuj użyć swojego modułu odbc. Przykład kodu pracy z bazą danych ODBC i 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') 

To jest bardzo podobna dla każdego kierowcy db użyłem w Pythonie i Jython (pracuję z PostgreSQL, Oracle i Informix).

+0

Zgoda: "Odbicie" działa dobrze z M $ Access. – bernie

+0

bardzo dziękuję koleś – Vicky

+0

Potrzebuję zapytania z innej tabeli wewnątrz pętli for. Jak to zrobić? – Nayan

3

Ostatnio odniosłem sukces, korzystając z modułu adodbapi pywin32.

Poniższy fragment został zaczerpnięty z this stronie:

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

Można użyć pypyodbc łatwo utworzyć pusty plik Access MDB na platformie win32, a także kompaktowe istniejące pliki Access MDB.

Może być tak proste, jak:

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

Więcej więcej, jako dBi 2,0 ODBC biblioteki pypyodbc jest wysoce kompatybilny z pyodbc można wykonać zapytania do bazy danych SQL, takich jak SELECT, INSERT, UPDATE z biblioteką .

Oto pełna wersja Tutorial dotycząca wsparcia dla programu pypyodbc.

Nota prawna: Jestem twórcą pypyodbc.

+0

Witaj.! Jak mogę użyć hasła do mojego pliku db przy użyciu pypyodbc ..? Uważam, że pypyodbc jest dla mnie bardzo przydatny. – Tirthajust4u