Python的sqlite3模塊中常用函數(shù)
概述
在這一節(jié),我們將介紹Python的sqlite3模塊。sqlite3模塊是Python中的內(nèi)置模塊,用于與SQLite數(shù)據(jù)庫(kù)交互。SQLite是一個(gè)輕量級(jí)的磁盤數(shù)據(jù)庫(kù),不需要單獨(dú)的服務(wù)器進(jìn)程。你可以在多個(gè)線程和進(jìn)程之間共享SQLite數(shù)據(jù)庫(kù),并且它支持事務(wù)處理、零配置以及多種數(shù)據(jù)類型。
下面,我們將逐一介紹sqlite3模塊中一些常用的函數(shù)和類。
connect()函數(shù)
connect()函數(shù)用于建立與SQLite數(shù)據(jù)庫(kù)的連接。該函數(shù)接受一個(gè)數(shù)據(jù)庫(kù)文件名作為參數(shù),并返回一個(gè)連接對(duì)象,該對(duì)象可用于執(zhí)行SQL命令和操作數(shù)據(jù)庫(kù)。如果指定的數(shù)據(jù)庫(kù)文件不存在,connect()函數(shù)將創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)文件。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db')
close()函數(shù)
close()函數(shù)用于關(guān)閉數(shù)據(jù)庫(kù)連接。一旦完成了與數(shù)據(jù)庫(kù)的交互,使用close()函數(shù)是一個(gè)推薦的做法,因?yàn)樗梢葬尫刨Y源并確保連接被正確關(guān)閉。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
cursor()函數(shù)
cursor()函數(shù)用于創(chuàng)建一個(gè)游標(biāo)對(duì)象,以執(zhí)行SQL命令和處理結(jié)果。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
execute()函數(shù)
execute()函數(shù)是游標(biāo)對(duì)象(Cursor)的一個(gè)方法,用于執(zhí)行SQL命令。使用execute()函數(shù),可以執(zhí)行各種SQL命令,比如:SELECT、INSERT、UPDATE、DELETE等。注意:execute()函數(shù)只是執(zhí)行SQL命令,并不會(huì)自動(dòng)提交更改。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行SQL命令 cursor.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT)') # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
executemany()函數(shù)
executemany()函數(shù)是游標(biāo)對(duì)象(Cursor)的一個(gè)方法,用于執(zhí)行相同的SQL命令多次,每次使用來(lái)自序列的不同參數(shù)。使用executemany()函數(shù),可以在一次數(shù)據(jù)庫(kù)交互中執(zhí)行多次插入、更新或刪除操作,這通常比重復(fù)執(zhí)行execute()函數(shù)更有效。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行SQL命令多次 users = [('Jack',), ('Tom',), ('Mike',)] cursor.executemany("INSERT INTO users (name) VALUES (?)", users) # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
commit()函數(shù)
commit()函數(shù)是數(shù)據(jù)庫(kù)連接對(duì)象(Connection)的一個(gè)方法,用于提交事務(wù)。在SQLite中,事務(wù)是一組數(shù)據(jù)庫(kù)操作,要么全部成功執(zhí)行,要么全部回滾(撤銷)。當(dāng)我們?cè)赟QLite中執(zhí)行多個(gè)操作時(shí),可以使用事務(wù)來(lái)確保數(shù)據(jù)的一致性。
使用commit()函數(shù),可以提交之前執(zhí)行的所有數(shù)據(jù)庫(kù)操作。一旦調(diào)用了commit()函數(shù),所有未提交的更改都會(huì)被保存到數(shù)據(jù)庫(kù)中。如果在調(diào)用commit()函數(shù)之前發(fā)生了錯(cuò)誤,可以選擇回滾事務(wù)以撤銷所有更改。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行一些數(shù)據(jù)庫(kù)操作 cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)') cursor.execute("INSERT INTO users (name) VALUES ('Jack')") cursor.execute("INSERT INTO users (name) VALUES ('Tom')") # 提交更改 conn.commit() # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
fetchall()函數(shù)
fetchall()函數(shù)是游標(biāo)對(duì)象(Cursor)的一個(gè)方法,用于獲取查詢結(jié)果集中的所有行。使用該函數(shù),可以一次性獲取查詢結(jié)果集中的所有行,并以列表的形式返回。每行數(shù)據(jù)表示為一個(gè)元組或列表,其中包含了該行的各個(gè)列的值。
注意:如果查詢結(jié)果集非常大,使用fetchall()函數(shù)可能會(huì)消耗較多的內(nèi)存。在這種情況下,可以考慮使用 fetchone()或fetchmany()函數(shù)來(lái)分批獲取查詢結(jié)果。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 獲取查詢結(jié)果集中的所有行 rows = cursor.fetchall() # 輸出查詢結(jié)果 for row in rows: print(row) # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
fetchone()函數(shù)
fetchone()函數(shù)是游標(biāo)對(duì)象(Cursor)的一個(gè)方法,用于獲取查詢結(jié)果集中的下一行。使用該函數(shù),可以逐行獲取查詢結(jié)果集中的數(shù)據(jù)。每次調(diào)用fetchone()函數(shù),它會(huì)返回結(jié)果集中的下一行數(shù)據(jù)。當(dāng)沒(méi)有更多的行可用時(shí),它將返回None。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 獲取查詢結(jié)果集中的下一行數(shù)據(jù) row = cursor.fetchone() # 輸出查詢結(jié)果 while row: print(row) row = cursor.fetchone() # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
fetchmany()函數(shù)
fetchmany(size)函數(shù)是游標(biāo)對(duì)象(Cursor)的一個(gè)方法,用于獲取查詢結(jié)果集中的多行數(shù)據(jù),最多獲取size行。注意:每次調(diào)用 fetchmany()都會(huì)從上次獲取數(shù)據(jù)的地方開(kāi)始繼續(xù)獲取,也就是說(shuō),如果先調(diào)用了fetchmany(5),然后再調(diào)用 fetchmany(5),那么第二次調(diào)用將返回查詢結(jié)果的第6-10行。如果想要重新從頭開(kāi)始獲取數(shù)據(jù),需要先調(diào)用 cursor.scroll(0, mode='absolute') 來(lái)重置游標(biāo)位置。
import sqlite3 # 連接到數(shù)據(jù)庫(kù)文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 最多獲取5行數(shù)據(jù) rows = cursor.fetchmany(5) # 輸出查詢結(jié)果 for row in rows: print(row) # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
到此這篇關(guān)于Python的sqlite3模塊中常用函數(shù)的文章就介紹到這了,更多相關(guān)Python sqlite3模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中如何使用sqlite3操作SQLite數(shù)據(jù)庫(kù)詳解
- 使用Python連接SQLite數(shù)據(jù)庫(kù)的操作步驟
- 通過(guò)python封裝SQLite3的示例代碼
- Python數(shù)據(jù)庫(kù)編程之SQLite和MySQL的實(shí)踐指南
- Python中SQLite數(shù)據(jù)庫(kù)的使用
- Python數(shù)據(jù)庫(kù)sqlite3圖文實(shí)例詳解
- Python使用sqlite3第三方庫(kù)讀寫SQLite數(shù)據(jù)庫(kù)的方法步驟
- Python練習(xí)之操作SQLite數(shù)據(jù)庫(kù)
- python處理SQLite數(shù)據(jù)庫(kù)的方法
- SQLite5-使用Python來(lái)讀寫數(shù)據(jù)庫(kù)
- Pandas使用SQLite3實(shí)戰(zhàn)
相關(guān)文章
Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方
本文主要介紹了Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧Chat?Gpt<BR>2023-07-07selenium+python 去除啟動(dòng)的黑色cmd窗口方法
今天小編就為大家分享一篇selenium+python 去除啟動(dòng)的黑色cmd窗口方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05使用Python將PDF文件轉(zhuǎn)換為PowerPoint文件
PDF文件在需要進(jìn)行生動(dòng)、互動(dòng)性強(qiáng)的演示時(shí),PDF的靜態(tài)特性便難以滿足個(gè)性化演示需求,將PDF文件轉(zhuǎn)換為PowerPoint演示文稿可以解決這一問(wèn)題,本文將介紹如何使用Python將PDF文件轉(zhuǎn)換為PowerPoint演示文稿,需要的朋友可以參考下2024-07-07Python數(shù)據(jù)處理利器Slice函數(shù)用法詳解
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)處理利器Slice函數(shù)用法的相關(guān)資料,slice函數(shù)是Python中的一個(gè)內(nèi)置函數(shù),用于對(duì)序列進(jìn)行切片操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03Django通用類視圖實(shí)現(xiàn)忘記密碼重置密碼功能示例
今天小編就為大家分享一篇Django通用類視圖實(shí)現(xiàn)忘記密碼重置密碼功能示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12