2012-05-11 148 views
5

我試圖在python上使用pyodbc來訪問.mdb。到目前爲止,我根據我的進步此鏈接在Ubuntu上對Python使用Access數據庫(.mdb)

Query crashes MS Access

我已經安裝了pyodbc,unixODBC的,並且unixODBC的-dev的

我的代碼如下所示:

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

當我運行它,我收到此錯誤消息:

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

有沒有人h有沒有想法?任何幫助將非常感謝

謝謝!

+0

我不熟悉Linux,但在Windows上,此錯誤意味着您沒有在控制面板 - >管理工具 - > ODBC連接中設置ODBC連接。並且您將在連接中傳遞數據源名稱(DNS),而不是文件的名稱(位於DNS中)。 – HardCode

+0

我想因爲我使用.mdb,它都是本地的,所以我不需要DNS。這聽起來是對的嗎?我將其基於本頁頂部的示例https://code.google.com/p/pyodbc/wiki/ConnectionStrings – mythander889

+0

我認爲您仍然需要爲MS Access安裝ODBC驅動程序。 Easysoft銷售一個。 http://www.easysoft.com/products/data_access/odbc-access-driver/index.html假設mdbtools包含一個,但它被描述爲有限。 http://mdbtools.sourceforge.net/install/x90.htm – HansUp

回答

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

有官方例子..使用...

3

據我所知這個驅動程序「Microsoft Access驅動程序(* .mdb)中」僅僅是微軟主機上的,因爲你是在Ubuntu上,它不會工作。

+0

是的,我已與這個答案到目前爲止。如果有人有解決方案,請分享。 –

相關問題