Python操作SQLite數(shù)據(jù)庫(kù)的方法詳解【導(dǎo)入,創(chuàng)建,游標(biāo),增刪改查等】
本文實(shí)例講述了Python操作SQLite數(shù)據(jù)庫(kù)的方法。分享給大家供大家參考,具體如下:
SQLite簡(jiǎn)介
SQLite,是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起MySQL、PostgreSQL這兩款開(kāi)源的世界著名數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月。 至2015年已經(jīng)有15個(gè)年頭,SQLite也迎來(lái)了一個(gè)版本 SQLite 3已經(jīng)發(fā)布。
SQLite數(shù)據(jù)庫(kù)的使用
1.導(dǎo)入Python SQLite數(shù)據(jù)庫(kù)模塊
python2.5版本以后內(nèi)置SQLite數(shù)據(jù)庫(kù)
import sqlite3
2. 創(chuàng)建/打開(kāi)數(shù)據(jù)庫(kù)
調(diào)用connect函數(shù)的時(shí)候,指定庫(kù)名稱,如果指定的數(shù)據(jù)庫(kù)存在就直接打開(kāi)這個(gè)數(shù)據(jù)庫(kù),如果不存在就新創(chuàng)建一個(gè)再打開(kāi)
conn = sqlite3.connect("E:/test.db")
或者也可以在內(nèi)存中創(chuàng)建
conn = sqlite3.connect(":memory:")
3.數(shù)據(jù)庫(kù)連接對(duì)象
打開(kāi)數(shù)據(jù)庫(kù)時(shí)返回的對(duì)象conn就是一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象,它可以有以下操作:
commit()
--事務(wù)提交
rollback()
--事務(wù)回滾
close()
--關(guān)閉一個(gè)數(shù)據(jù)庫(kù)連接
cursor()
--創(chuàng)建一個(gè)游標(biāo)
關(guān)于commit(),如果isolation_level隔離級(jí)別默認(rèn),那么每次對(duì)數(shù)據(jù)庫(kù)的操作,都需要使用該命令,你也可以設(shè)置isolation_level=None,這樣就變?yōu)樽詣?dòng)提交模式。
4.使用游標(biāo)查詢數(shù)據(jù)庫(kù)
我們需要使用游標(biāo)對(duì)象SQL語(yǔ)句查詢數(shù)據(jù)庫(kù),獲得查詢對(duì)象。 通過(guò)以下方法來(lái)定義一個(gè)游標(biāo)。
cu=conn.cursor()
游標(biāo)對(duì)象有以下的操作:
execute()
--執(zhí)行sql語(yǔ)句
executemany
--執(zhí)行多條sql語(yǔ)句
close()
--關(guān)閉游標(biāo)
fetchone()
--從結(jié)果中取一條記錄,并將游標(biāo)指向下一條記錄
fetchmany()
--從結(jié)果中取多條記錄
fetchall()
--從結(jié)果中取出所有記錄
scroll()
--游標(biāo)滾動(dòng)
SQLite數(shù)據(jù)庫(kù)操作
1. 創(chuàng)建數(shù)據(jù)庫(kù)表
cu.execute("create table user (id integer primary key,name varchar(20) UNIQUE,age integer,comment text NULL)") # 創(chuàng)建一張user表,表中有id(主鍵),名字(唯一),年齡,備注(默認(rèn)為空)
2. 插入數(shù)據(jù)
請(qǐng)注意避免以下寫(xiě)法:
# 這樣寫(xiě)會(huì)導(dǎo)致注入攻擊 pid=200 c.execute("... where id= '%s'" % id)
正確的做法如下,如果t只是單個(gè)數(shù)值,也要采用t=(n,)的形式,因?yàn)樵M是不可變的。
for user in[(0,'aaa',111,'aaaa'),(1,'bbb',222,'bbbb')]: conn.execute("insert into user values (?,?,?,?)", user) # 注意user是元組,不可變 conn.commit() # 注意插入操作之后要進(jìn)行提交
3. 查詢數(shù)據(jù)
cu.execute("select * from user") cu.fetchone() # 得到游標(biāo)的第一個(gè)值 cu.execute("select * from user") cu.fetchall() # 使用游標(biāo)的fetch函數(shù),fetchall得到所有的查詢記錄
4. 修改數(shù)據(jù)
cu.execute("update user set name='ccc' where id = 0") conn.commit()
5. 刪除數(shù)據(jù)
cu.execute("delete from user where id = 1") conn.commit()
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Django使用unittest模塊進(jìn)行單元測(cè)試過(guò)程解析
這篇文章主要介紹了Django使用unittest模塊進(jìn)行單元測(cè)試過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python3實(shí)現(xiàn)將文件歸檔到zip文件及從zip文件中讀取數(shù)據(jù)的方法
這篇文章主要介紹了Python3實(shí)現(xiàn)將文件歸檔到zip文件及從zip文件中讀取數(shù)據(jù)的方法,涉及Python針對(duì)zip文件操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05在macOS上搭建python環(huán)境的實(shí)現(xiàn)方法
今天小編就為大家分享一篇在macOS上搭建python環(huán)境的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08python 消除 futureWarning問(wèn)題的解決
今天小編就為大家分享一篇python 消除 futureWarning問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Pandas如何通過(guò)np.array函數(shù)或tolist方法去掉數(shù)據(jù)中的index
這篇文章主要介紹了Pandas如何通過(guò)np.array函數(shù)或tolist方法去掉數(shù)據(jù)中的index問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02Python一行代碼識(shí)別發(fā)票并保存Excel示例詳解
這篇文章主要為大家介紹了Python一行代碼識(shí)別發(fā)票并保存Excel示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Python構(gòu)建XML樹(shù)結(jié)構(gòu)的方法示例
這篇文章主要介紹了Python構(gòu)建XML樹(shù)結(jié)構(gòu)的方法,結(jié)合實(shí)例形式分析了Python創(chuàng)建與打印xml數(shù)結(jié)構(gòu)的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-06-06Python 利用4行代碼實(shí)現(xiàn)圖片灰度化的項(xiàng)目實(shí)踐
灰度處理是將彩色圖像轉(zhuǎn)換為灰度圖像的過(guò)程,即每個(gè)像素的顏色由紅、綠、藍(lán)三個(gè)通道的值組成,轉(zhuǎn)換為一個(gè)單一的灰度值,本文主要介紹了Python 利用4行代碼實(shí)現(xiàn)圖片灰度化的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-04-04