日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python调用access数据库_Python访问Access数据库

發布時間:2023/12/9 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python调用access数据库_Python访问Access数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容:利用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程序員參考http://doc.51windows.net/ado/?url=/ado/dir.htm

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

#這里對幾個重要的函數和屬性記錄一下

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.Fields.Item(0).AppendChunk(blob) #對于二進制數據需要用此函數賦值

###設置好各項的值之后###rs.Update() 保存新紀錄,也可以保存對記錄的修改。調用該方法,需要在打開rs的時候,設置鎖定類型具體都可以在 ADO程序員參考http://doc.51windows.net/ado/?url=/ado/dir.htm找到介紹。

至此對于Access 的mdb文件的簡單訪問就基本實現了。

ADO作為訪問數據的COM接口,支持多種數據源,多種語言,當然也就支持Python對于Access的訪問。對于Python訪問Access更深入的學習,應該是對于ADO相關接口類的深入了解。

這里有個對于Python訪問數據庫的相對清楚的教程:http://www.mayukhbose.com/python/ado/ado-recordset.php

最后記錄編碼問題,Python利用AddNew添加新紀錄可以避免編碼問題,對于文本可以直接將unicode對象賦值給文本字段。如果利用conn.Execute(insert_sql)或者 rs.Execute(insert_sql)對于insert_sql插入sql字符串,不能插入unicode對象,需要編碼為gbk、gb2312、gb18030、utf8等一系列編碼,在一些偏僻中文字符上會出現亂碼等一系列不可控問題。

總結

以上是生活随笔為你收集整理的python调用access数据库_Python访问Access数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。