Python3.7 pyodbc完美配置訪問access數(shù)據(jù)庫
環(huán)境 win2008 r2 64為系統(tǒng)
python3.7、pyodbc
安裝好python3.7以后,那么就需要安裝pyodbc了。
數(shù)據(jù)庫連接
數(shù)據(jù)庫連接網(wǎng)上大致有兩種方法,一種是使用pyodbc,另一種是使用win32com.client,測試了很多遍,最終只有pyodbc成功,而且比較好用,所以這里只介紹這種方法
工具庫安裝
在此基礎(chǔ)上安裝pyodbc工具庫,在cmd窗口執(zhí)行如下語句安裝
pip install pyodbc
如果安裝了anaconda也可以使用conda install pyodbc

分享給大家供大家參考,具體如下:
檢驗(yàn)是否可以正常連接數(shù)據(jù)庫檢查是否有一個(gè)Microsoft Access ODBC驅(qū)動(dòng)程序可用于你的Python環(huán)境(在Windows上)的方法:
>>> import pyodbc
>>>[x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
如果你看到一個(gè)空列表,那么您正在運(yùn)行64位Python,并且需要安裝64位版本的“ACE”驅(qū)動(dòng)程序。如果您只看到['Microsoft Access Driver (*.mdb)']并且需要使用.accdb文件,那么您需要安裝32位版本的“ACE”驅(qū)動(dòng)程序
pyodbc.InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 未發(fā)
現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序 (0) (SQLDriverConnect)')
例如上面這樣的提示就需要安裝64位的ODBC 驅(qū)動(dòng)器:
64位ODBC驅(qū)動(dòng)器的下載地址 https://www.microsoft.com/en-us/download/details.aspx?id=13255
直接安裝會報(bào)錯(cuò),所以我們需要修改一下文件AccessDatabaseEngine_X64.exe,先對其進(jìn)行解壓,然后打開AccessDatabaseEngine_X64文件夾,有一個(gè)AceRedist.msi文件。用Orca軟件將AceRedist.msi打開,找到找到LaunchCondition里面的BLOCKINSTALLATION,刪除那一行數(shù)據(jù)并進(jìn)行保存。然后再運(yùn)行AceRedist.msi,就可以把64位的ODBC 驅(qū)動(dòng)器安裝成功。
如果感覺上面的操作比較麻煩,可以直接下載腳本之家小編已經(jīng)處理過的版本。
下載地址:http://www.dbjr.com.cn/softs/695978.html
注意:
1、不用配置數(shù)據(jù)源
2、Orcad的下載地址 http://www.dbjr.com.cn/softs/16217.html
下面是經(jīng)過腳本之家小編測試過的代碼
access是2000的,理論上2010也可以。
import pyodbc
DBfile = r"F:\python\caiji.mdb" # 數(shù)據(jù)庫文件需要帶路徑
print(DBfile)
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ DBfile +";Uid=;Pwd=;")
cursor = conn.cursor()
SQL = "SELECT * from sites;"
for row in cursor.execute(SQL):
print(row)
cursor.close()
conn.close()
如果可以打印出結(jié)果

完整測試代碼
# -*-coding:utf-8-*-
import pyodbc
# 連接數(shù)據(jù)庫(不需要配置數(shù)據(jù)源),connect()函數(shù)創(chuàng)建并返回一個(gè) Connection 對象
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\data\goods.mdb')
# cursor()使用該連接創(chuàng)建(并返回)一個(gè)游標(biāo)或類游標(biāo)的對象
crsr = cnxn.cursor()
# 打印數(shù)據(jù)庫goods.mdb中的所有表的表名
print('`````````````` goods ``````````````')
for table_info in crsr.tables(tableType='TABLE'):
print(table_info.table_name)
l = crsr.execute("SELECT * from goods WHERE goodsId='0001'")# [('0001', '扇葉', 20, 'A公司', 'B公司', 2000, 2009)]
rows = crsr.execute("SELECT currentStock from goods") # 返回的是一個(gè)元組
for item in rows:
print(item)
l = crsr.execute("UPDATE users SET username='lind' WHERE password='123456'")
print(crsr.rowcount) # 想知道數(shù)據(jù)修改和刪除時(shí),到底影響了多少條記錄,這個(gè)時(shí)候你可以使用cursor.rowcount的返回值。
# 修改數(shù)據(jù)庫中int類型的值
value = 10
SQL = "UPDATE goods " \
"SET lowestStock=" + str(value) + " " \
"WHERE goodsId='0005'"
# 刪除表users
crsr.execute("DROP TABLE users")
# 創(chuàng)建新表 users
crsr.execute('CREATE TABLE users (login VARCHAR(8),userid INT, projid INT)')
# 給表中插入新數(shù)據(jù)
crsr.execute("INSERT INTO users VALUES('Linda',211,151)")
''''''
# 更新數(shù)據(jù)
crsr.execute("UPDATE users SET projid=1 WHERE userid=211")
# 刪除行數(shù)據(jù)
crsr.execute("DELETE FROM goods WHERE goodNum='0001'")
# 打印查詢的結(jié)果
for row in crsr.execute("SELECT * from users"):
print(row)
# 提交數(shù)據(jù)(只有提交之后,所有的操作才會對實(shí)際的物理表格產(chǎn)生影響)
crsr.commit()
crsr.close()
cnxn.close()
補(bǔ)充
# -*- coding: utf-8 -*-
# 功能:python連接access2010數(shù)據(jù)庫(.accdb)
import pyodbc
DBfile = r"C:\Users\lenovo\Desktop\test.accdb" # 數(shù)據(jù)庫文件
conn = pyodbc.connect(r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + DBfile + ";Uid=;Pwd=;")
cursor = conn.cursor()
SQL = "SELECT * from table1;"
for row in cursor.execute(SQL):
print row.col1
cursor.close()
注意:win7系統(tǒng)是64位,office安裝的是32位,AccessDatabaseEngine安裝的是32位。
在win7 64位系統(tǒng)打開ODBC數(shù)據(jù)源管理器:
要查看32位ODBC驅(qū)動(dòng):運(yùn)行 C:/Windows/SysWOW64/odbcad32.exe
要查看64位ODBC驅(qū)動(dòng):運(yùn)行 C:/WINDOWS/system32/odbcad32.exe或者控制面板—管理工具—數(shù)據(jù)源(ODBC)
如果只運(yùn)行odbcad32.exe,則默認(rèn)打開的是后者。
剩下的就需要你自行發(fā)揮了,腳本之家小編今天就先介紹到這了,后期我們會分享更多的資料
相關(guān)文章
Django連接數(shù)據(jù)庫并實(shí)現(xiàn)讀寫分離過程解析
這篇文章主要介紹了Django連接數(shù)據(jù)庫并實(shí)現(xiàn)讀寫分離過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼
登錄驗(yàn)證碼是每個(gè)網(wǎng)站登錄時(shí)的基本標(biāo)配,這篇文章主要介紹了Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
基于python批量處理dat文件及科學(xué)計(jì)算方法詳解
今天小編就為大家分享一篇基于python批量處理dat文件及科學(xué)計(jì)算方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python pandas讀取CSV文件的注意事項(xiàng)(適合新手)
這篇文章主要給大家介紹了關(guān)于Python pandas讀取CSV文件的注意事項(xiàng),非常適合新手,csv是我接觸的比較早的一種文件,比較好的是這種文件既能夠以電子表格的形式查看又能夠以文本的形式查看,需要的朋友可以參考下2021-06-06

