2012-05-11 4 views
5

Tôi đang cố sử dụng pyodbc để truy cập vào .mdb trên Ubuntu. Tôi đã dựa tiến bộ của tôi cho đến nay vào liên kết nàySử dụng cơ sở dữ liệu Access (.mdb) bằng Python trên Ubuntu

Query crashes MS Access

Tôi đã cài đặt pyodbc, unixodbc, và unixodbc-dev

Mã của tôi trông như thế này:

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

Khi tôi chạy nó, tôi nhận được thông báo lỗi này:

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

Có ai h ave bất kỳ ý tưởng? Mọi trợ giúp sẽ được đánh giá rất nhiều

Cảm ơn bạn!

+0

Tôi không quen với Linux, nhưng trên Windows, lỗi này có nghĩa là bạn đã không thiết lập kết nối ODBC trong Pa-nen điều khiển -> Công cụ quản trị -> Kết nối ODBC. Và bạn sẽ chuyển Tên dữ liệu (DNS) trong kết nối, chứ không phải tên tệp (trong DNS). – HardCode

+0

Tôi nghĩ rằng vì tôi đang sử dụng một .mdb đó là tất cả các địa phương, vì vậy tôi không cần một DNS. Điều đó có đúng không? Tôi đang dựa trên ví dụ ở đầu trang https://code.google.com/p/pyodbc/wiki/ConnectionStrings – mythander889

+0

Tôi nghĩ bạn vẫn cần phải cài đặt trình điều khiển ODBC cho MS Access. Easysoft bán một cái. http://www.easysoft.com/products/data_access/odbc-access-driver/index.html Giả sử mdbtools bao gồm một nhưng nó được mô tả là có giới hạn. http://mdbtools.sourceforge.net/install/x90.htm – HansUp

Trả lời

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

Có là The Official Ví dụ .. sử dụng ...

3

Từ những gì tôi biết trình điều khiển này "Microsoft Access Driver (* .mdb)" là chỉ có sẵn trên một máy chủ Microsoft, kể từ khi bạn là trên ubuntu, nó sẽ không hoạt động.

+0

Có Tôi đang có câu trả lời này cho đến nay. Hãy chia sẻ nếu ai đó có giải pháp. –