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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

怎么在Python3.7中使用pyodbc配置访问access数据库

發(fā)布時間:2023/12/15 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 怎么在Python3.7中使用pyodbc配置访问access数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天就跟大家聊聊有關(guān)怎么在Python3.7中使用pyodbc配置訪問access數(shù)據(jù)庫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

數(shù)據(jù)庫連接

數(shù)據(jù)庫連接網(wǎng)上大致有兩種方法,一種是使用pyodbc,另一種是使用win32com.client,測試了很多遍,最終只有pyodbc成功,而且比較好用,所以這里只介紹這種方法

工具庫安裝

在此基礎(chǔ)上安裝pyodbc工具庫,在cmd窗口執(zhí)行如下語句安裝

pip install pyodbc

如果安裝了anaconda也可以使用conda install pyodbc

分享給大家供大家參考,具體如下:

檢驗是否可以正常連接數(shù)據(jù)庫檢查是否有一個Microsoft Access ODBC驅(qū)動程序可用于你的Python環(huán)境(在Windows上)的方法:

>>> import pyodbc
>>>[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]

如果你看到一個空列表,那么您正在運行64位Python,并且需要安裝64位版本的“ACE”驅(qū)動程序。如果您只看到['Microsoft Access Driver (*.mdb)']并且需要使用.accdb文件,那么您需要安裝32位版本的“ACE”驅(qū)動程序

pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC 驅(qū)動程序管理器] 未發(fā)
現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動程序 (0) (SQLDriverConnect)')

例如上面這樣的提示就需要安裝64位的ODBC 驅(qū)動器:

64位ODBC驅(qū)動器的下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=13255
直接安裝會報錯,所以我們需要修改一下文件AccessDatabaseEngine_X64.exe,先對其進(jìn)行解壓,然后打開AccessDatabaseEngine_X64文件夾,有一個AceRedist.msi文件。用Orca軟件將AceRedist.msi打開,找到找到LaunchCondition里面的BLOCKINSTALLATION,刪除那一行數(shù)據(jù)并進(jìn)行保存。然后再運行AceRedist.msi,就可以把64位的ODBC 驅(qū)動器安裝成功。

如果感覺上面的操作比較麻煩,可以直接下載億速云小編已經(jīng)處理過的版本。

下載地址:https://www.jb51.net/softs/695978.html

注意:

1、不用配置數(shù)據(jù)源
2、Orcad的下載地址 https://www.jb51.net/softs/16217.html

下面是經(jīng)過億速云小編測試過的代碼

access是2000的,理論上2010也可以。

importpyodbc

DBfile=r"F:\python\caiji.mdb"#數(shù)據(jù)庫文件需要帶路徑
print(DBfile)
conn=pyodbc.connect(r"DRIVER={MicrosoftAccessDriver(*.mdb,*.accdb)};DBQ="+DBfile+";Uid=;Pwd=;")
cursor=conn.cursor()
SQL="SELECT*fromsites;"
forrowincursor.execute(SQL):
print(row)
cursor.close()
conn.close()

如果可以打印出結(jié)果

完整測試代碼

#-*-coding:utf-8-*-
importpyodbc

#連接數(shù)據(jù)庫(不需要配置數(shù)據(jù)源),connect()函數(shù)創(chuàng)建并返回一個Connection對象
cnxn=pyodbc.connect(r'DRIVER={MicrosoftAccessDriver(*.mdb,*.accdb)};DBQ=.\data\goods.mdb')
#cursor()使用該連接創(chuàng)建(并返回)一個游標(biāo)或類游標(biāo)的對象
crsr=cnxn.cursor()

#打印數(shù)據(jù)庫goods.mdb中的所有表的表名
print('``````````````goods``````````````')
fortable_infoincrsr.tables(tableType='TABLE'):
print(table_info.table_name)


l=crsr.execute("SELECT*fromgoodsWHEREgoodsId='0001'")#[('0001','扇葉',20,'A公司','B公司',2000,2009)]

rows=crsr.execute("SELECTcurrentStockfromgoods")#返回的是一個元組
foriteminrows:
print(item)

l=crsr.execute("UPDATEusersSETusername='lind'WHEREpassword='123456'")
print(crsr.rowcount)#想知道數(shù)據(jù)修改和刪除時,到底影響了多少條記錄,這個時候你可以使用cursor.rowcount的返回值。

#修改數(shù)據(jù)庫中int類型的值
value=10
SQL="UPDATEgoods"\
"SETlowestStock="+str(value)+""\
"WHEREgoodsId='0005'"

#刪除表users
crsr.execute("DROPTABLEusers")
#創(chuàng)建新表users
crsr.execute('CREATETABLEusers(loginVARCHAR(8),useridINT,projidINT)')
#給表中插入新數(shù)據(jù)
crsr.execute("INSERTINTOusersVALUES('Linda',211,151)")

''''''
#更新數(shù)據(jù)
crsr.execute("UPDATEusersSETprojid=1WHEREuserid=211")

#刪除行數(shù)據(jù)
crsr.execute("DELETEFROMgoodsWHEREgoodNum='0001'")

#打印查詢的結(jié)果
forrowincrsr.execute("SELECT*fromusers"):
print(row)


#提交數(shù)據(jù)(只有提交之后,所有的操作才會對實際的物理表格產(chǎn)生影響)
crsr.commit()
crsr.close()
cnxn.close()

補充

#-*-coding:utf-8-*-
#功能:python連接access2010數(shù)據(jù)庫(.accdb)

importpyodbc

DBfile=r"C:\Users\lenovo\Desktop\test.accdb"#數(shù)據(jù)庫文件
conn=pyodbc.connect(r"Driver={MicrosoftAccessDriver(*.mdb,*.accdb)};DBQ="+DBfile+";Uid=;Pwd=;")


cursor=conn.cursor()
SQL="SELECT*fromtable1;"
forrowincursor.execute(SQL):
printrow.col1
cursor.close()

總結(jié)

以上是生活随笔為你收集整理的怎么在Python3.7中使用pyodbc配置访问access数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。