詳解在python操作數(shù)據(jù)庫(kù)中游標(biāo)的使用方法
cursor就是一個(gè)Cursor對(duì)象,這個(gè)cursor是一個(gè)實(shí)現(xiàn)了迭代器(def__iter__())和生成器(yield)的MySQLdb對(duì)象,這個(gè)時(shí)候cursor中還沒有數(shù)據(jù),只有等到fetchone()或fetchall()的時(shí)候才返回一個(gè)元組tuple,才支持len()和index()操作,這也是它是迭代器的原因。但同時(shí)為什么說它是生成器呢?因?yàn)閏ursor只能用一次,即每用完一次之后記錄其位置,等到下次再取的時(shí)候是從游標(biāo)處再取而不是從頭再來,而且fetch完所有的數(shù)據(jù)之后,這個(gè)cursor將不再有使用價(jià)值了,即不再能fetch到數(shù)據(jù)了。
數(shù)據(jù)庫(kù)支持
使用簡(jiǎn)單的純文本只能實(shí)現(xiàn)有退限的功能,所需要引入數(shù)據(jù)庫(kù),完成更強(qiáng)大的功能,本節(jié)使用的簡(jiǎn)單數(shù)據(jù)庫(kù)SQLite 。
SQLite 和PySQLite
sqlite是非常著名的開源嵌入式數(shù)據(jù)庫(kù)軟件,它可以嵌入到其他程序中使用,并且提供SQL接口用來查詢,非常方便。它的官方站點(diǎn)為http://www.sqlite.org。
而pysqlite 則是一個(gè)sqlite 為 python 提供的 api 接口,它讓一切對(duì)于 sqlite 的操作都變得異常簡(jiǎn)單
在python2.5版本這后,SQLite的優(yōu)勢(shì)在于它的一個(gè)包裝(PySQLite)已經(jīng)被包括在標(biāo)準(zhǔn)庫(kù)內(nèi),所以我們可以直接使用。
入門操作
可以將SQLite作為名為sqlite3的模塊導(dǎo)入。之后就可以創(chuàng)建一個(gè)到數(shù)據(jù)庫(kù)文件的連接----如果文件不存在就會(huì)被創(chuàng)建----通過提供一個(gè)文件名:
>>> import sqlite3 >>> conn= sqlite3.connect('somedatabase.db') # 創(chuàng)建數(shù)據(jù)庫(kù) >>>cu =conn.cursor() #能獲得連接的游標(biāo) #創(chuàng)建數(shù)據(jù)表 >>>cu.execute("""create table catalog ( id integer primary key, pid integer, name varchar(10) UNIQUE )""") #插入兩條數(shù)據(jù) >>>cu.execute("insert into catalog values(0,0,'name1')") >>>cu.execute("insert into catalog values(1,0,'name2')") >>>conn.commit() #選擇(select) >>>cu.execute("select * from catalog") >>>cu.fetchall() [(0, 0, 'name1'), (1, 0, 'name2')] >>>cu.execute("select * from catalog where id = 1") >>>cu.fetchall() [(1, 0, 'name2')] #修改(update) >>>cu.execute(“update catalog set name='name2′ where id = 0″) >>> cx.commit() >>> cu.execute(“select * from catalog”) >>> cu.fetchone() (0, 0, ‘name2′) #刪除(delete) >>>cu.execute(“delete from catalog where id= 1″) >>> cx.commit() >>> cu.execute(“select * from catalog”) >>> cu.fetchall() [(0, 0, 'name2')]
連接
為了使用基礎(chǔ)數(shù)據(jù)庫(kù)系統(tǒng),首先必須連接到它,這個(gè)時(shí)候需要使用具有名稱的connect函數(shù),該函數(shù)有多個(gè)參數(shù),而具體用哪個(gè)參數(shù)取決于數(shù)據(jù)庫(kù)。
connect函數(shù)的常用參數(shù):
connect函數(shù)返回連接對(duì)象。這個(gè)對(duì)象表示目前和數(shù)據(jù)庫(kù)的會(huì)話。連接對(duì)象支持的方法如下;
連接對(duì)象方法:
commit 方法總是可用的,但如果數(shù)據(jù)庫(kù)不支持事務(wù),它就沒有任何作用。如果關(guān)閉了連接但還有未提交的事務(wù),它們會(huì)隱式地回滾---但是只有在數(shù)據(jù)庫(kù)支持持回滾的時(shí)候才可以。
rollback 方法可能不可用,因?yàn)椴皇撬械臄?shù)據(jù)庫(kù)都支持事務(wù)(事務(wù)是一系列動(dòng)作)。如果可用,那么就可以“撤銷”所有未提交的事務(wù)。
cursor 方法將我們引入另外一個(gè)主題:游標(biāo)對(duì)象。通過游標(biāo)掃行SQL 查詢并檢查結(jié)果。游標(biāo)連接支持更多的方法,而且可能在程序中更好用。
游標(biāo):
cu = conn.cursor()
能獲得連接的游標(biāo),這個(gè)游標(biāo)可以用來執(zhí)行SQL查詢。
conn.commit()
完成插入并且做出某些更改后確保已經(jīng)進(jìn)行了提交,這樣才可以將這些修改真正地保存到文件中。
游標(biāo)對(duì)象方法:
游標(biāo)對(duì)象特性:
cu.fetchone()
fetchall()返回結(jié)果集中的全部數(shù)據(jù),結(jié)果為一個(gè)tuple的列表。每個(gè)tuple元素是按建表的字段順序排列。注意,游標(biāo)是有狀態(tài)的,它可以記錄當(dāng)前已經(jīng)取到結(jié)果的第幾個(gè)記錄了,因此,一般你只可以遍歷結(jié)果集一次。在上面的情況下,如果執(zhí)行fetchone()會(huì)返回為空。這一點(diǎn)在測(cè)試時(shí)需要注意。
conn.close()
可以在每次修改數(shù)據(jù)庫(kù)后都進(jìn)行提交,而不是僅僅在準(zhǔn)備關(guān)閉才提交,準(zhǔn)備關(guān)閉數(shù)據(jù)時(shí),使用close 方法。
總結(jié)
以上所述是小編給大家介紹的在python操作數(shù)據(jù)庫(kù)中游標(biāo)的使用方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python實(shí)戰(zhàn)購(gòu)物車項(xiàng)目的實(shí)現(xiàn)參考
今天小編就為大家分享一篇關(guān)于Python實(shí)戰(zhàn)購(gòu)物車項(xiàng)目的實(shí)現(xiàn)參考,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì)
這篇文章主要介紹了python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07python+selenium開發(fā)環(huán)境搭建圖文教程
這篇文章主要為大家詳細(xì)介紹了python+selenium開發(fā)環(huán)境搭建的圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法
這篇文章主要介紹了django認(rèn)證系統(tǒng)實(shí)現(xiàn)自定義權(quán)限管理的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解
這篇文章主要介紹了python編程之requests在網(wǎng)絡(luò)請(qǐng)求中添加cookies參數(shù)方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10python實(shí)現(xiàn)控制臺(tái)輸出彩色字體
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)控制臺(tái)輸出彩色字體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04Python實(shí)現(xiàn)讀取大量Excel文件并跨文件批量計(jì)算平均值
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言,實(shí)現(xiàn)對(duì)多個(gè)不同Excel文件進(jìn)行數(shù)據(jù)讀取與平均值計(jì)算的方法,感興趣的可以了解一下2023-02-02Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn)
本文主要介紹了Java中MultipartFile與File互轉(zhuǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03