內容:利用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 資料庫...