Python的sqlite3模塊中常用函數(shù)
概述
在這一節(jié),我們將介紹Python的sqlite3模塊。sqlite3模塊是Python中的內(nèi)置模塊,用于與SQLite數(shù)據(jù)庫交互。SQLite是一個輕量級的磁盤數(shù)據(jù)庫,不需要單獨的服務(wù)器進(jìn)程。你可以在多個線程和進(jìn)程之間共享SQLite數(shù)據(jù)庫,并且它支持事務(wù)處理、零配置以及多種數(shù)據(jù)類型。
下面,我們將逐一介紹sqlite3模塊中一些常用的函數(shù)和類。
connect()函數(shù)
connect()函數(shù)用于建立與SQLite數(shù)據(jù)庫的連接。該函數(shù)接受一個數(shù)據(jù)庫文件名作為參數(shù),并返回一個連接對象,該對象可用于執(zhí)行SQL命令和操作數(shù)據(jù)庫。如果指定的數(shù)據(jù)庫文件不存在,connect()函數(shù)將創(chuàng)建一個新的數(shù)據(jù)庫文件。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')close()函數(shù)
close()函數(shù)用于關(guān)閉數(shù)據(jù)庫連接。一旦完成了與數(shù)據(jù)庫的交互,使用close()函數(shù)是一個推薦的做法,因為它可以釋放資源并確保連接被正確關(guān)閉。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()cursor()函數(shù)
cursor()函數(shù)用于創(chuàng)建一個游標(biāo)對象,以執(zhí)行SQL命令和處理結(jié)果。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
cursor = conn.cursor()
# 關(guān)閉游標(biāo)
cursor.close()
# 關(guān)閉數(shù)據(jù)庫連接
conn.close()execute()函數(shù)
execute()函數(shù)是游標(biāo)對象(Cursor)的一個方法,用于執(zhí)行SQL命令。使用execute()函數(shù),可以執(zhí)行各種SQL命令,比如:SELECT、INSERT、UPDATE、DELETE等。注意:execute()函數(shù)只是執(zhí)行SQL命令,并不會自動提交更改。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
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ù)庫連接
conn.close()executemany()函數(shù)
executemany()函數(shù)是游標(biāo)對象(Cursor)的一個方法,用于執(zhí)行相同的SQL命令多次,每次使用來自序列的不同參數(shù)。使用executemany()函數(shù),可以在一次數(shù)據(jù)庫交互中執(zhí)行多次插入、更新或刪除操作,這通常比重復(fù)執(zhí)行execute()函數(shù)更有效。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
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ù)庫連接
conn.close()commit()函數(shù)
commit()函數(shù)是數(shù)據(jù)庫連接對象(Connection)的一個方法,用于提交事務(wù)。在SQLite中,事務(wù)是一組數(shù)據(jù)庫操作,要么全部成功執(zhí)行,要么全部回滾(撤銷)。當(dāng)我們在SQLite中執(zhí)行多個操作時,可以使用事務(wù)來確保數(shù)據(jù)的一致性。
使用commit()函數(shù),可以提交之前執(zhí)行的所有數(shù)據(jù)庫操作。一旦調(diào)用了commit()函數(shù),所有未提交的更改都會被保存到數(shù)據(jù)庫中。如果在調(diào)用commit()函數(shù)之前發(fā)生了錯誤,可以選擇回滾事務(wù)以撤銷所有更改。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
cursor = conn.cursor()
# 執(zhí)行一些數(shù)據(jù)庫操作
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ù)庫連接
conn.close()fetchall()函數(shù)
fetchall()函數(shù)是游標(biāo)對象(Cursor)的一個方法,用于獲取查詢結(jié)果集中的所有行。使用該函數(shù),可以一次性獲取查詢結(jié)果集中的所有行,并以列表的形式返回。每行數(shù)據(jù)表示為一個元組或列表,其中包含了該行的各個列的值。
注意:如果查詢結(jié)果集非常大,使用fetchall()函數(shù)可能會消耗較多的內(nèi)存。在這種情況下,可以考慮使用 fetchone()或fetchmany()函數(shù)來分批獲取查詢結(jié)果。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
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ù)庫連接
conn.close()fetchone()函數(shù)
fetchone()函數(shù)是游標(biāo)對象(Cursor)的一個方法,用于獲取查詢結(jié)果集中的下一行。使用該函數(shù),可以逐行獲取查詢結(jié)果集中的數(shù)據(jù)。每次調(diào)用fetchone()函數(shù),它會返回結(jié)果集中的下一行數(shù)據(jù)。當(dāng)沒有更多的行可用時,它將返回None。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
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ù)庫連接
conn.close()fetchmany()函數(shù)
fetchmany(size)函數(shù)是游標(biāo)對象(Cursor)的一個方法,用于獲取查詢結(jié)果集中的多行數(shù)據(jù),最多獲取size行。注意:每次調(diào)用 fetchmany()都會從上次獲取數(shù)據(jù)的地方開始繼續(xù)獲取,也就是說,如果先調(diào)用了fetchmany(5),然后再調(diào)用 fetchmany(5),那么第二次調(diào)用將返回查詢結(jié)果的第6-10行。如果想要重新從頭開始獲取數(shù)據(jù),需要先調(diào)用 cursor.scroll(0, mode='absolute') 來重置游標(biāo)位置。
import sqlite3
# 連接到數(shù)據(jù)庫文件
conn = sqlite3.connect('test.db')
# 創(chuàng)建游標(biāo)對象
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ù)庫連接
conn.close()到此這篇關(guān)于Python的sqlite3模塊中常用函數(shù)的文章就介紹到這了,更多相關(guān)Python sqlite3模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python爬蟲指南之xpath實例解析(附實戰(zhàn))
在進(jìn)行網(wǎng)頁抓取的時候,分析定位html節(jié)點是獲取抓取信息的關(guān)鍵,目前我用的是lxml模塊,下面這篇文章主要給大家介紹了關(guān)于python爬蟲指南之xpath實例解析的相關(guān)資料,需要的朋友可以參考下2022-01-01
Python中Matplotlib繪圖保存圖片時調(diào)節(jié)圖形清晰度或分辨率的方法
有時我們在使用matplotlib作圖時,圖片不清晰或者圖片大小不是我們想要的,這篇文章主要給大家介紹了關(guān)于Python中Matplotlib繪圖保存圖片時調(diào)節(jié)圖形清晰度或分辨率的相關(guān)資料,需要的朋友可以參考下2024-05-05
使用Python高效實現(xiàn)PDF內(nèi)容差異對比的方法詳解
PDF是一種便攜文檔格式,便于跨操作系統(tǒng)傳播文檔,PDF文檔遵循標(biāo)準(zhǔn)格式,因此存在很多可以操作PDF文檔的工具,Python自然也不例外,本文將給大家介紹了如何使用Python高效實現(xiàn)PDF內(nèi)容差異對比,需要的朋友可以參考下2025-06-06
Python Django 數(shù)據(jù)庫的相關(guān)操作詳解
下面小編就為大家?guī)硪黄猟jango數(shù)據(jù)庫的相關(guān)操作,小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11
python串口如何讀取byte類型數(shù)據(jù)并訪問
這篇文章主要介紹了python串口如何讀取byte類型數(shù)據(jù)并訪問方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
Python設(shè)置Excel條件格式的實戰(zhàn)教程
條件格式是一項強(qiáng)大的功能,它可以根據(jù)單元格值自動應(yīng)用不同的格式樣式,本文將介紹如何使用 Python 在 Excel 工作表中應(yīng)用條件格式,實現(xiàn)數(shù)據(jù)的可視化展示,感興趣的小伙伴可以了解下2026-03-03

