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