在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ù)庫后,需要打開游標,稱之為Cursor,通過Cursor執(zhí)行SQL語句,然后,獲得執(zhí)行結(jié)果。
Python定義了一套操作數(shù)據(jù)庫的API接口,任何數(shù)據(jù)庫要連接到Python,只需要提供符合Python標準的數(shù)據(jù)庫驅(qū)動即可。
由于SQLite的驅(qū)動內(nèi)置在Python標準庫中,所以我們可以直接來操作SQLite數(shù)據(jù)庫。
我們在Python交互式命令行實踐一下:
# 導(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支持常見的標準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的實現(xiàn)
- 詳解Python 數(shù)據(jù)庫 (sqlite3)應(yīng)用
- python查詢sqlite數(shù)據(jù)表的方法
- Python3實現(xiàn)連接SQLite數(shù)據(jù)庫的方法
- Python操作SQLite簡明教程
- Python SQLite3數(shù)據(jù)庫操作類分享
- Python操作sqlite3快速、安全插入數(shù)據(jù)(防注入)的實例
- python操作數(shù)據(jù)庫之sqlite3打開數(shù)據(jù)庫、刪除、修改示例
- Python操作Sqlite正確實現(xiàn)方法解析
相關(guān)文章
基于Python代碼實現(xiàn)Apriori?關(guān)聯(lián)規(guī)則算法
這篇文章主要介紹了基于Python代碼實現(xiàn)Apriori?關(guān)聯(lián)規(guī)則算法,本文通過應(yīng)用場景舉例,結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-03-03
解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題
這篇文章主要介紹了解決windows下命令行執(zhí)行python3失效,會打開應(yīng)用商店問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
關(guān)于Django顯示時間你應(yīng)該知道的一些問題
將Django項目部署到Linux系統(tǒng)上進行測試時,發(fā)現(xiàn)操作記錄的時間與服務(wù)器的時間不一致,相差13個小時。這主要是因為時區(qū)的問題,下面這篇文章主要總結(jié)介紹了關(guān)于Django顯示時間你應(yīng)該知道的一些問題,需要的朋友可以參考下。2017-12-12

