怎么在Python3.7中使用pyodbc配置访问access数据库
今天就跟大家聊聊有關(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')]
如果你看到一個空列表,那么您正在運(yùn)行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)行保存。然后再運(yù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ù)(只有提交之后,所有的操作才會對實(shí)際的物理表格產(chǎn)生影響)
crsr.commit()
crsr.close()
cnxn.close()
補(bǔ)充
#-*-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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythonrecord 51 net_
- 下一篇: TypeScript中处理大数字(会丢失