目錄
前言
一、pyodbc是什麼?
二、pyodbc的安裝
1、使用清華鏡像安裝
2、解決安裝報錯
3、解決辦法
三、pyodbc連接配接MDB執行操作的使用步驟
1、連接配接資料庫
2、建立表
3、建立字段
4、插入資料
5、查詢資料
6、更新表中的資料
7、删除表中資料
總結
前言
因為最近經常加班,工作内容大部分都是一些重複性的工作,總是要寫一些SQL語句去更新、删除、查詢,而access又隻能一條一條的執行,就搞得心力憔悴。于是想起了當初學python的目的,不就是為了去做重複性的工作而解放雙手嗎?然後就在網上查詢方法,在躺過無數個坑之後,終于皇天不負有心人,總算找到了解決辦法并成功解放雙手,嘿嘿!下面就将自己所用的方法整理出來友善以後自己查詢,同時也希望能幫助有需求的朋友避免再次躺坑。
一、pyodbc是什麼?
在開始之前我們首先要知道pyodbc是什麼?能幫助我們幹什麼?确定是否能解決自己遇到的問題。首先pyodbc是一個Python子產品,能夠讓你使用 ODBC 連接配接來自Windows, Linux, OS/X等系統中的大部分資料庫。因為目前自己隻用于access資料庫,其他資料庫也沒有去過多的實驗。本章實戰我們就用來連接配接access,實作對MDB的增、删、改、查。
二、pyodbc的安裝
以我自己的電腦組態為例:python版本是3.8,32位。access是2010版本
1、使用清華鏡像安裝
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyodbc --user
或者使用:pip install pyodbc 安裝,反正能正常安裝就好。
2、解決安裝報錯
我當時是用清華鏡像安裝,報錯下面這個錯誤
3、解決辦法
出現這個錯誤的原因是Python本地版本與下載下傳的第三方子產品安裝包不比對,因為清華鏡像下載下傳的是最新版本,如果報錯,需要去手動下載下傳比對版本的子產品安裝包。
下載下傳位址(https://www.lfd.uci.edu/~gohlke/pythonlibs/)
cp38是python的版本号
win32是第三方子產品的版本
下載下傳成功之後在cmd找到下載下傳後安裝包存放的位置,執行下面這句安裝即可。
pip install pyodbc-4.0.32-cp38-cp38-win32.whl
如下圖所示:前面幾個報錯是因為我下載下傳的版本與python版本不比對,最後一個則是下載下傳比對的版本之後成功安裝。
三、pyodbc連接配接MDB執行操作的使用步驟
pyodbc.connect | 連接配接資料庫 |
xxx.cursor() | 建立遊标 |
cursor.execute() | 所有的SQL語句都用cursor.execute函數運作 |
cursor.rowcount | 擷取SQL語句執行的條數 |
cursor.commit() | 送出資料 |
cursor.close() | 關閉遊标 |
connect.close() | 斷開連接配接 |
1、連接配接資料庫
為了友善執行其他mdb資料庫,這裡我用了個靈活點的方式,建立一個path變量,在執行的時候輸入mdb資料庫的路徑即可
(列如我的mdb檔案存在桌面上,那麼我輸入C:\Users\Administrator\Desktop\測試.mdb)
# 導入庫
import pyodbc
# 建立輸入路徑
path = input('請輸入處理資料路徑:')
# 連接配接資料庫
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ path +";Uid=;Pwd=;")
# 建立遊标
cursor = conn.cursor()
2、建立表
注意:
1、所有的SQL語句都用cursor.execute()函數運作
2、調用cnxn.commit()函數,否者你對資料庫的所有操作将會失效!
# 導入子產品
import pyodbc
# 建立路徑
path = input('請輸入處理資料路徑:')
# 連接配接資料庫
conn = pyodbc.connect(r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+ path +";Uid=;Pwd=;")
# 建立遊标
cursor = conn.cursor()
# 執行SQL語句,建立表
cursor.execute("create table [測試表]")
# 送出資料
cursor.commit()
3、建立字段
文本型 | text | 用于輸入文本或文本與數字相結合的資料 |
貨币型 | Currency | 用來存儲貨币值,即與貨币相關的資料,占8個位元組,在計算中禁止四舍五入。 |
數字型 | Number | 用于存儲數值資料,可以進行數值計算的資料,但貨币除外 |
日期/時間型 | Date/Time | 用于存儲日期和(或)時間值,占8個位元組。 |
自動編号型 | AutoNumber | 預設是長整型,自動編号不能更新。 |
是/否型 | Yes/No | 又稱為布爾型類型,用于存儲邏輯值(是/否、真/假、開/關),占1個位元組。 |
OLE對象型 | OLE Object | 用于使用OLE協定在其它程式中建立的OLE對象(如Word文檔、Excel電子表格、圖檔、聲音等),最多存儲1GB(受磁盤空間限制)。 |
附件 | 附件類型是存儲數字圖像等二進制檔案的首選資料類型。 | |
超連結型 | Hyper Link | 用于存放通過超連結方式連結的Windows對象,如通過超連結跳轉至文檔、網頁等。 |
建立字段CS1,CS2到測試表中,字段類型為文本,大小為預設(255)
# 執行SQL語句建立字段
cursor.execute("Alter Table 測試表 Add Column CS1 text,CS2 text")
# 送出資料
cursor.commit()
4、插入資料
# 執行SQL語句插入資料
cursor.execute("insert into 測試表(CS1,CS2) values ('西遊記','吳承恩')")
# 送出資料
cursor.commit()
5、查詢資料
完整的連接配接mdb資料庫并查詢資料代碼如下:
# 執行SQL語句
cursor.execute("select CS1, CS2 from 測試表")
# 傳回查詢結果
row = cursor.fetchone()
# 列印查詢結果
print(row)
6、更新表中的資料
# 執行SQL語句更新資料
cursor.execute("update 測試表 set cs1='三國演義'")
# 送出資料
cursor.commit()
7、删除表中資料
# 執行SQL語句删除資料
cursor.execute("delete from 測試表 where cs1='三國演義'")
# 送出資料
cursor.commit()
總結
以上就是今天要分享的内容,本文僅僅簡單介紹了pyodbc的使用,而pyodbc提供了大量能使我們快速便捷地處理資料的函數和方法去處理重複性的工作,是以加油吧!少年!人生苦短,我學python!!!