前面幾節(jié)我們初步認(rèn)識了數(shù)據(jù)庫,我們想要把數(shù)據(jù)庫連接到程序中,還是需要一個(gè)模塊,我們使用PyMySQL模塊來進(jìn)行連接,安裝它的命令為:pip install PyMySQL,如果安裝失敗可以使用下面的命令:pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com安裝完成如圖所示。
安裝完成后我們再來講解一下為什么數(shù)據(jù)庫都下載好了還需要再安裝一個(gè)模塊,因?yàn)槲覀兊臄?shù)據(jù)庫是存放在我們的電腦上的,這就等于你有一個(gè)U盤,U盤里有很多數(shù)據(jù),但是U盤放到電腦旁邊是沒有辦法獲取其中的數(shù)據(jù)的,因此需要一個(gè)接口,通過這個(gè)接口電腦可以獲取到U盤中的數(shù)據(jù),我們下載的這個(gè)模塊就充當(dāng)這個(gè)接口的作用,把數(shù)據(jù)庫和我們的程序連接到一起。在我們學(xué)習(xí)數(shù)據(jù)庫操作之前,我們先了解一下連接對象的方法和游標(biāo)對象。
1. 連接對象的方法
了解方法之前我們首先來了解一下連接對象,連接對象的功能就是負(fù)責(zé)對數(shù)據(jù)源的連接,連接成功之后我們才可以執(zhí)行數(shù)據(jù)庫的相關(guān)指令。
Connection對象中有一些方法供我們使用,如下表:
函數(shù) | 功能 |
close() | 關(guān)閉數(shù)據(jù)庫連接 |
commit() | 提交事務(wù) |
rollback() | 回滾數(shù)據(jù)庫事務(wù) |
cursor() | 獲得cursor游標(biāo)對象 |
在數(shù)據(jù)庫操作中,事務(wù)往往包含了讀寫的操作,如果把一個(gè)事務(wù)交給數(shù)據(jù)庫管理系統(tǒng),那么在當(dāng)前事務(wù)的所有操作未執(zhí)行完畢之前,該事務(wù)的所有數(shù)據(jù)都處在數(shù)據(jù)庫中,如果有操作未完成就需要進(jìn)行回滾操作,回到執(zhí)行前的操作,上面的幾種方法在我們是用數(shù)據(jù)庫的過程中會(huì)經(jīng)常遇到。
2. 游標(biāo)對象
游標(biāo)(Cursor)是處理數(shù)據(jù)的一種方法,為了查看或者處理結(jié)果集中的數(shù)據(jù),游標(biāo)提供了在結(jié)果集中一次一行或者多行前進(jìn)或向后瀏覽數(shù)據(jù)的能力。游標(biāo)在數(shù)據(jù)庫管理系統(tǒng)中十分重要,創(chuàng)建游標(biāo)對象的方法有多種,下面我們來介紹游標(biāo)屬性及方法。
游標(biāo)屬性有:
Description:數(shù)據(jù)庫類型和值的相關(guān)信息。
Rowcount:返回結(jié)果的行數(shù)統(tǒng)計(jì)信息。
游標(biāo)方法如下圖:
方法 | 功能 |
execute(sql[, parameters]) | 執(zhí)行一條SQL語句 |
executemany(sql, seq_of_parameters) | 用于批量執(zhí)行SQL語句 |
fetchone() | 捕獲查詢結(jié)果集的下一行,返回單個(gè)序列,在沒有更多數(shù)據(jù)可用時(shí)不返回 |
fetchmany(size=cursor.arraysize) | 搜索查詢結(jié)果的下一組行,返回列表。當(dāng)不可用行時(shí),將返回一個(gè)空列表。 |
fetchall() | 捕獲查詢結(jié)果的所有(剩余)行,返回列表。光標(biāo)的數(shù)組大小屬性可能會(huì)影響此操作的性能。如果沒有行,則返回空列表。 |
close() | 關(guān)閉當(dāng)前游標(biāo) |
Callproc(procname,[,parameters]) | 執(zhí)行存儲(chǔ)過程,procname為存儲(chǔ)過程名,parameters為存儲(chǔ)過程提供的參數(shù) |
connection.rollback() | 回滾從上一次調(diào)用 commit() 之后對數(shù)據(jù)庫所做的所有變動(dòng) |
cursor.executescript(sql_script) | 接收到腳本會(huì)執(zhí)行多個(gè) SQL 語句,它首先執(zhí)行 COMMIT 語句,然后執(zhí)行作為參數(shù)傳入的 SQL 腳本 |
connection.executescript(sql_script) | 這是一個(gè)非標(biāo)準(zhǔn)的快捷方式,通過調(diào)用游標(biāo)()方法創(chuàng)建游標(biāo)對象,使用給定的sql_script調(diào)用游標(biāo)的executescript()方法,并返回游標(biāo)。 |
connection.total_changes() | 返回自數(shù)據(jù)庫連接打開以來被修改、插入或刪除的數(shù)據(jù)庫總行數(shù) |
3. 總結(jié)
本節(jié)我提到的這些是數(shù)據(jù)庫操作中比較常用的方法,在遇到相關(guān)問題的時(shí)候可以回頭翻看本節(jié)內(nèi)容,下面兩節(jié)我們先來學(xué)一種嵌入式數(shù)據(jù)庫SQLite,我們通過接口連接這種數(shù)據(jù)庫也可以進(jìn)行相關(guān)操作。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程