2012-05-11 49 views
5

Próbuję użyć pyodbc, aby uzyskać dostęp do pliku .mdb w systemie Ubuntu. Mam moje postępy oparte dotychczas na ten linkUżywanie bazy danych programu Access (.mdb) z Pythonem na Ubuntu

Query crashes MS Access

mam zainstalowanego pyodbc, unixodbc i unixodbc-dev

Mój kod wygląda następująco:

import csv 
import pyodbc 

MDB = 'URY.mdb' 
DRV ='Microsoft Access Driver (*.mdb)' 
PWD = 'pass' 

conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD)) 
curs = conn.cursor() 

kiedy uruchom, otrzymuję ten komunikat o błędzie:

Traceback (most recent call last): 
    File "mdbscraper.py", line 8, in <module> 
    conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD)) 
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found,   and no default driver specified (0) (SQLDriverConnect)') 

Czy ktoś h ave jakieś pomysły? Każda pomoc będzie bardzo doceniana.

Dziękujemy!

+0

Nie znam systemu Linux, ale w systemie Windows ten błąd oznaczałby, że nie skonfigurowałeś połączenia ODBC w Panelu sterowania -> Narzędzia administracyjne -> Połączenia ODBC. I przekazałbyś nazwę źródła danych (DNS) w połączeniu, a nie nazwę pliku (który znajduje się w DNS). – HardCode

+0

Myślę, że ponieważ używam .mdb to wszystko jest lokalne, więc nie potrzebuję DNS. Czy to brzmi dobrze? Opieram go na przykładzie u góry tej strony https://code.google.com/p/pyodbc/wiki/ConnectionStrings – mythander889

+0

Myślę, że nadal musisz zainstalować sterownik ODBC dla MS Access. Easysoft sprzedaje jeden. http://www.easysoft.com/products/data_access/odbc-access-driver/index.html Podobno mdbtools zawiera jeden, ale jest opisany jako ograniczony. http://mdbtools.sourceforge.net/install/x90.htm – HansUp

Odpowiedz

0
import pyodbc 
DBfile = '/data/MSAccess/Music_Library.mdb' 
conn = pyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ='+DBfile) 
cursor = conn.cursor() 
SQL = 'SELECT Artist, AlbumName FROM RecordCollection ORDER BY Year;' 

for row in cursor.execute(SQL): # cursors are iterable 
print row.Artist, row.AlbumName 

cursor.close() 
conn.close() 

Jest Oficjalna .. Przykład zastosowania ...

3

Z tego co wiem, to sterownik „Sterownik Microsoft Access (* .mdb)” jest dostępna wyłącznie na komputerze Microsoft, ponieważ jesteś na ubuntu, to nie zadziała.

+0

Tak, jak na razie jestem z tą odpowiedzią. Udostępnij, jeśli ktoś ma rozwiązanie. –

Powiązane problemy