您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)怎么在Python3.7中使用pyodbc配置訪問(wèn)access數(shù)據(jù)庫(kù),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
數(shù)據(jù)庫(kù)連接
數(shù)據(jù)庫(kù)連接網(wǎng)上大致有兩種方法,一種是使用pyodbc,另一種是使用win32com.client,測(cè)試了很多遍,最終只有pyodbc成功,而且比較好用,所以這里只介紹這種方法
工具庫(kù)安裝
在此基礎(chǔ)上安裝pyodbc工具庫(kù),在cmd窗口執(zhí)行如下語(yǔ)句安裝
pip install pyodbc
如果安裝了anaconda也可以使用conda install pyodbc
分享給大家供大家參考,具體如下:
檢驗(yàn)是否可以正常連接數(shù)據(jù)庫(kù)檢查是否有一個(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
直接安裝會(huì)報(bào)錯(cuò),所以我們需要修改一下文件AccessDatabaseEngine_X64.exe,先對(duì)其進(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)器安裝成功。
如果感覺(jué)上面的操作比較麻煩,可以直接下載億速云小編已經(jīng)處理過(guò)的版本。
下載地址:https://www.jb51.net/softs/695978.html
注意:
1、不用配置數(shù)據(jù)源
2、Orcad的下載地址 https://www.jb51.net/softs/16217.html
下面是經(jīng)過(guò)億速云小編測(cè)試過(guò)的代碼
access是2000的,理論上2010也可以。
import pyodbc DBfile = r"F:\python\caiji.mdb" # 數(shù)據(jù)庫(kù)文件需要帶路徑 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é)果
完整測(cè)試代碼
# -*-coding:utf-8-*- import pyodbc # 連接數(shù)據(jù)庫(kù)(不需要配置數(shù)據(jù)源),connect()函數(shù)創(chuàng)建并返回一個(gè) Connection 對(duì)象 cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\data\goods.mdb') # cursor()使用該連接創(chuàng)建(并返回)一個(gè)游標(biāo)或類游標(biāo)的對(duì)象 crsr = cnxn.cursor() # 打印數(shù)據(jù)庫(kù)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ù)庫(kù)中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ù)(只有提交之后,所有的操作才會(huì)對(duì)實(shí)際的物理表格產(chǎn)生影響) crsr.commit() crsr.close() cnxn.close()
補(bǔ)充
# -*- coding: utf-8 -*- # 功能:python連接access2010數(shù)據(jù)庫(kù)(.accdb) import pyodbc DBfile = r"C:\Users\lenovo\Desktop\test.accdb" # 數(shù)據(jù)庫(kù)文件 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()
看完上述內(nèi)容,你們對(duì)怎么在Python3.7中使用pyodbc配置訪問(wèn)access數(shù)據(jù)庫(kù)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。