在Python中使用SQLite的簡(jiǎn)單教程
SQLite是一種嵌入式數(shù)據(jù)庫(kù),它的數(shù)據(jù)庫(kù)就是一個(gè)文件。由于SQLite本身是C寫(xiě)的,而且體積很小,所以,經(jīng)常被集成到各種應(yīng)用程序中,甚至在iOS和Android的App中都可以集成。
Python就內(nèi)置了SQLite3,所以,在Python中使用SQLite,不需要安裝任何東西,直接使用。
在使用SQLite前,我們先要搞清楚幾個(gè)概念:
表是數(shù)據(jù)庫(kù)中存放關(guān)系數(shù)據(jù)的集合,一個(gè)數(shù)據(jù)庫(kù)里面通常都包含多個(gè)表,比如學(xué)生的表,班級(jí)的表,學(xué)校的表,等等。表和表之間通過(guò)外鍵關(guān)聯(lián)。
要操作關(guān)系數(shù)據(jù)庫(kù),首先需要連接到數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)連接稱(chēng)為Connection;
連接到數(shù)據(jù)庫(kù)后,需要打開(kāi)游標(biāo),稱(chēng)之為Cursor,通過(guò)Cursor執(zhí)行SQL語(yǔ)句,然后,獲得執(zhí)行結(jié)果。
Python定義了一套操作數(shù)據(jù)庫(kù)的API接口,任何數(shù)據(jù)庫(kù)要連接到Python,只需要提供符合Python標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)即可。
由于SQLite的驅(qū)動(dòng)內(nèi)置在Python標(biāo)準(zhǔn)庫(kù)中,所以我們可以直接來(lái)操作SQLite數(shù)據(jù)庫(kù)。
我們?cè)赑ython交互式命令行實(shí)踐一下:
# 導(dǎo)入SQLite驅(qū)動(dòng): >>> import sqlite3 # 連接到SQLite數(shù)據(jù)庫(kù) # 數(shù)據(jù)庫(kù)文件是test.db # 如果文件不存在,會(huì)自動(dòng)在當(dāng)前目錄創(chuàng)建: >>> conn = sqlite3.connect('test.db') # 創(chuàng)建一個(gè)Cursor: >>> cursor = conn.cursor() # 執(zhí)行一條SQL語(yǔ)句,創(chuàng)建user表: >>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))') <sqlite3.Cursor object at 0x10f8aa260> # 繼續(xù)執(zhí)行一條SQL語(yǔ)句,插入一條記錄: >>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')') <sqlite3.Cursor object at 0x10f8aa260> # 通過(guò)rowcount獲得插入的行數(shù): >>> cursor.rowcount 1 # 關(guān)閉Cursor: >>> cursor.close() # 提交事務(wù): >>> conn.commit() # 關(guān)閉Connection: >>> conn.close()
我們?cè)僭囋嚥樵?xún)記錄:
>>> conn = sqlite3.connect('test.db') >>> cursor = conn.cursor() # 執(zhí)行查詢(xún)語(yǔ)句: >>> cursor.execute('select * from user where id=?', '1') <sqlite3.Cursor object at 0x10f8aa340> # 獲得查詢(xún)結(jié)果集: >>> values = cursor.fetchall() >>> values [(u'1', u'Michael')] >>> cursor.close() >>> conn.close()
使用Python的DB-API時(shí),只要搞清楚Connection和Cursor對(duì)象,打開(kāi)后一定記得關(guān)閉,就可以放心地使用。
使用Cursor對(duì)象執(zhí)行insert,update,delete語(yǔ)句時(shí),執(zhí)行結(jié)果由rowcount返回影響的行數(shù),就可以拿到執(zhí)行結(jié)果。
使用Cursor對(duì)象執(zhí)行select語(yǔ)句時(shí),通過(guò)featchall()可以拿到結(jié)果集。結(jié)果集是一個(gè)list,每個(gè)元素都是一個(gè)tuple,對(duì)應(yīng)一行記錄。
如果SQL語(yǔ)句帶有參數(shù),那么需要把參數(shù)按照位置傳遞給execute()方法,有幾個(gè)?占位符就必須對(duì)應(yīng)幾個(gè)參數(shù),例如:
cursor.execute('select * from user where id=?', '1')
SQLite支持常見(jiàn)的標(biāo)準(zhǔn)SQL語(yǔ)句以及幾種常見(jiàn)的數(shù)據(jù)類(lèi)型。具體文檔請(qǐng)參閱SQLite官方網(wǎng)站。
小結(jié)
在Python中操作數(shù)據(jù)庫(kù)時(shí),要先導(dǎo)入數(shù)據(jù)庫(kù)對(duì)應(yīng)的驅(qū)動(dòng),然后,通過(guò)Connection對(duì)象和Cursor對(duì)象操作數(shù)據(jù)。
要確保打開(kāi)的Connection對(duì)象和Cursor對(duì)象都正確地被關(guān)閉,否則,資源就會(huì)泄露。
如何才能確保出錯(cuò)的情況下也關(guān)閉掉Connection對(duì)象和Cursor對(duì)象呢?請(qǐng)回憶try:...except:...finally:...的用法。
- Python讀取sqlite數(shù)據(jù)庫(kù)文件的方法分析
- python 連接sqlite及簡(jiǎn)單操作
- Python操作SQLite數(shù)據(jù)庫(kù)的方法詳解
- 使用Python對(duì)SQLite數(shù)據(jù)庫(kù)操作
- Python簡(jiǎn)單操作sqlite3的方法示例
- SQLite3中文編碼 Python的實(shí)現(xiàn)
- 詳解Python 數(shù)據(jù)庫(kù) (sqlite3)應(yīng)用
- python查詢(xún)sqlite數(shù)據(jù)表的方法
- Python3實(shí)現(xiàn)連接SQLite數(shù)據(jù)庫(kù)的方法
- Python操作SQLite簡(jiǎn)明教程
- Python SQLite3數(shù)據(jù)庫(kù)操作類(lèi)分享
- Python操作sqlite3快速、安全插入數(shù)據(jù)(防注入)的實(shí)例
- python操作數(shù)據(jù)庫(kù)之sqlite3打開(kāi)數(shù)據(jù)庫(kù)、刪除、修改示例
- Python操作Sqlite正確實(shí)現(xiàn)方法解析
相關(guān)文章
python控制nao機(jī)器人身體動(dòng)作實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了python控制nao機(jī)器人身體動(dòng)作實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04詳解分布式系統(tǒng)中如何用python實(shí)現(xiàn)Paxos
提到分布式算法,就不得不提 Paxos 算法,在過(guò)去幾十年里,它基本上是分布式共識(shí)的代 名詞,因?yàn)楫?dāng)前最常用的一批共識(shí)算法都是基于它改進(jìn)的。比如,F(xiàn)ast Paxos 算法、 Cheap Paxos 算法、Raft 算法、ZAB 協(xié)議等等。2021-05-05Python實(shí)現(xiàn)調(diào)用另一個(gè)路徑下py文件中的函數(shù)方法總結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)用另一個(gè)路徑下py文件中的函數(shù)方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)不同文件夾中py文件調(diào)用操作的處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-06-06Python利用lxml庫(kù)實(shí)現(xiàn)XML處理
lxml庫(kù)是Python中處理XML和HTML文檔的強(qiáng)大庫(kù),提供了豐富的API以進(jìn)行各種操作,本文將討論如何使用lxml庫(kù),包括如何創(chuàng)建XML文檔,如何使用XPath查詢(xún),以及如何解析大型XML文檔,需要的可以參考下2023-08-08詳解Python如何實(shí)現(xiàn)尾遞歸優(yōu)化
尾遞歸是函數(shù)返回最后一個(gè)操作是遞歸調(diào)用,則該函數(shù)是尾遞歸。本文將介紹Python是如何實(shí)現(xiàn)尾遞歸優(yōu)化的,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05使用python編寫(xiě)監(jiān)聽(tīng)端
這篇文章主要為大家詳細(xì)介紹了使用python編寫(xiě)監(jiān)聽(tīng)端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04python3爬蟲(chóng)學(xué)習(xí)之?dāng)?shù)據(jù)存儲(chǔ)txt的案例詳解
這篇文章主要介紹了python3爬蟲(chóng)學(xué)習(xí)之?dāng)?shù)據(jù)存儲(chǔ)txt的案例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Mac上Python使用ffmpeg完美解決方案(避坑必看!)
ffmpeg是一個(gè)強(qiáng)大的開(kāi)源命令行多媒體處理工具,下面這篇文章主要給大家介紹了關(guān)于Mac上Python使用ffmpeg完美解決方案的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02Python實(shí)現(xiàn)獲取郵箱內(nèi)容并解析的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取郵箱內(nèi)容并解析的方法,結(jié)合完整實(shí)例形式分析了Python登陸pop3服務(wù)器并解析獲取郵箱內(nèi)容相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python sys.stdin和sys.stdout的用法說(shuō)明
這篇文章主要介紹了python sys.stdin和sys.stdout的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03