Python訪問Access資料庫

2022-07-14 23:21:31 字數 2058 閱讀 6716

內容:利用win32com.client 模組的com元件訪問功能,通過adodb訪問access的mdb檔案

#

獲取connection物件

conn = win32com.client.dispatch('

adodb.connection')

#設定connectionstring

conn.connectionstring = "

provider=microsoft.jet.oledb.4.0;data source=%s

"%(mdb_file) #

mdb_file為mdb檔案的路徑

#開啟連線

conn.open()#

這裡也可以conn.open(dsn) dsn內容和connectionstring一致

此時資料庫就連線上了。

成功的平台:win2008 64位系統;office2010 32位;python 32位;odbc 32位(位於c:/windows/syswow64/odbcad32.exe)開啟後有microsoft access driver(*mdb,*accdb)等驅動程式

失敗的平台:win7 64位系統;office2013 64位;python 64,32都試了;試著安裝了accessdatabaseengine2010的,都未成功,目前未找到原因。

#

開啟已開啟的資料庫中的已有表或者檢視表

rs = win32com.client.dispatch('

adodb.recordset')

rs.open(tablename,conn,1,3)#

open(sql,conn,1,3)

#rs的open(source,activeconnection,cursortype,locktype,options)

#後面的引數3使得表可以被編輯更新。具體詳細的引數和意義可以參照ado程式設計師參考

此時獲得了乙個可以表,其實只是乙個游標,游標指向的是對應表中的一條記錄,稱為當前記錄。我們可以通過一系列的操作讀取、編輯當前記錄,也可以移動游標來改變當前記錄。

#

這裡對幾個重要的函式和屬性記錄一下

rs.movefirst() rs.movelast() rs.movenext() rs.moveprevious()#

跟開啟表的游標型別有關係。

#用來改變游標所指向的當前記錄。

rs.bof 當前記錄位於第乙個記錄的前面時為true

rs.eof 當前記錄位於最後乙個記錄之後時為true 判斷記錄是否遍歷完

rs.bof和rs.eof同時為true時說明當前rs中沒有記錄。也就不能進行上面幾個操作。

#

新增新記錄著重記錄:

###利用rs.addnew()即依據rs新建了一條新紀錄,rs會指向該記錄。

###rs.fields.item(1) rs.fields.item("fieldname") 得到當前記錄的對應欄位的項

###rs.fields.item(1).value = data為對應項賦值##

##設定好各項的值之後

###rs.update() 儲存新紀錄,也可以儲存對記錄的修改。呼叫該方法,需要在開啟rs的時候,設定鎖定型別具體都可以在 ado程式設計師參考找到介紹。

至此對於access 的mdb檔案的簡單訪問就基本實現了。

ado作為訪問資料的com介面,支援多種資料來源,多種語言,當然也就支援python對於access的訪問。對於python訪問access更深入的學習,應該是對於ado相關介面類的深入了解。

這裡有個對於python訪問資料庫的相對清楚的教程:

最後記錄編碼問題,python利用addnew新增新紀錄可以避免編碼問題,對於文字可以直接將unicode物件賦值給文字字段。如果利用conn.execute(insert_sql)或者 rs.execute(insert_sql)對於insert_sql插入sql字串,不能插入unicode物件,需要編碼為gbk、gb2312、gb18030、utf8等一系列編碼,在一些偏僻中文字元上會出現亂碼等一系列不可控問題。

Excel中使用VBA訪問Access資料庫

excel中使用vba的優點 巨集是vba的一種簡單應用。巨集可以通過編寫vba 錄製巨集兩種方式獲得。通常是先錄製巨集,再在獲得的巨集的基礎上進行語句優化調整,最後得到想要的巨集。在 誰說菜鳥不會資料分析 工具篇 第四章 讓報告自動化中,涉及到根據輸入日期,從access資料庫中提取相關資料到ex...

使用ADO訪問ACCESS

coding utf 8 file ado.py import win32com.client 匯入win32com.client adocon win32com.client.dispatch adodb.connection 建立連線物件 adocon.open podbc 連線到資料來源 ad...

access鏈結mysql Access資料庫連線

access資料庫的連線,2000和2007版本有差別。access2000的連線字串為 str.format text provider microsoft.jet.oledb.4.0 persist security info false data source s szdatabase 資料庫...