Python的sqlite3模塊中常用函數
概述
在這一節(jié),我們將介紹Python的sqlite3模塊。sqlite3模塊是Python中的內置模塊,用于與SQLite數據庫交互。SQLite是一個輕量級的磁盤數據庫,不需要單獨的服務器進程。你可以在多個線程和進程之間共享SQLite數據庫,并且它支持事務處理、零配置以及多種數據類型。
下面,我們將逐一介紹sqlite3模塊中一些常用的函數和類。
connect()函數
connect()函數用于建立與SQLite數據庫的連接。該函數接受一個數據庫文件名作為參數,并返回一個連接對象,該對象可用于執(zhí)行SQL命令和操作數據庫。如果指定的數據庫文件不存在,connect()函數將創(chuàng)建一個新的數據庫文件。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db')
close()函數
close()函數用于關閉數據庫連接。一旦完成了與數據庫的交互,使用close()函數是一個推薦的做法,因為它可以釋放資源并確保連接被正確關閉。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 關閉數據庫連接 conn.close()
cursor()函數
cursor()函數用于創(chuàng)建一個游標對象,以執(zhí)行SQL命令和處理結果。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
execute()函數
execute()函數是游標對象(Cursor)的一個方法,用于執(zhí)行SQL命令。使用execute()函數,可以執(zhí)行各種SQL命令,比如:SELECT、INSERT、UPDATE、DELETE等。注意:execute()函數只是執(zhí)行SQL命令,并不會自動提交更改。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行SQL命令 cursor.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT)') # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
executemany()函數
executemany()函數是游標對象(Cursor)的一個方法,用于執(zhí)行相同的SQL命令多次,每次使用來自序列的不同參數。使用executemany()函數,可以在一次數據庫交互中執(zhí)行多次插入、更新或刪除操作,這通常比重復執(zhí)行execute()函數更有效。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行SQL命令多次 users = [('Jack',), ('Tom',), ('Mike',)] cursor.executemany("INSERT INTO users (name) VALUES (?)", users) # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
commit()函數
commit()函數是數據庫連接對象(Connection)的一個方法,用于提交事務。在SQLite中,事務是一組數據庫操作,要么全部成功執(zhí)行,要么全部回滾(撤銷)。當我們在SQLite中執(zhí)行多個操作時,可以使用事務來確保數據的一致性。
使用commit()函數,可以提交之前執(zhí)行的所有數據庫操作。一旦調用了commit()函數,所有未提交的更改都會被保存到數據庫中。如果在調用commit()函數之前發(fā)生了錯誤,可以選擇回滾事務以撤銷所有更改。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行一些數據庫操作 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() # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
fetchall()函數
fetchall()函數是游標對象(Cursor)的一個方法,用于獲取查詢結果集中的所有行。使用該函數,可以一次性獲取查詢結果集中的所有行,并以列表的形式返回。每行數據表示為一個元組或列表,其中包含了該行的各個列的值。
注意:如果查詢結果集非常大,使用fetchall()函數可能會消耗較多的內存。在這種情況下,可以考慮使用 fetchone()或fetchmany()函數來分批獲取查詢結果。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 獲取查詢結果集中的所有行 rows = cursor.fetchall() # 輸出查詢結果 for row in rows: print(row) # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
fetchone()函數
fetchone()函數是游標對象(Cursor)的一個方法,用于獲取查詢結果集中的下一行。使用該函數,可以逐行獲取查詢結果集中的數據。每次調用fetchone()函數,它會返回結果集中的下一行數據。當沒有更多的行可用時,它將返回None。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 獲取查詢結果集中的下一行數據 row = cursor.fetchone() # 輸出查詢結果 while row: print(row) row = cursor.fetchone() # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
fetchmany()函數
fetchmany(size)函數是游標對象(Cursor)的一個方法,用于獲取查詢結果集中的多行數據,最多獲取size行。注意:每次調用 fetchmany()都會從上次獲取數據的地方開始繼續(xù)獲取,也就是說,如果先調用了fetchmany(5),然后再調用 fetchmany(5),那么第二次調用將返回查詢結果的第6-10行。如果想要重新從頭開始獲取數據,需要先調用 cursor.scroll(0, mode='absolute') 來重置游標位置。
import sqlite3 # 連接到數據庫文件 conn = sqlite3.connect('test.db') # 創(chuàng)建游標對象 cursor = conn.cursor() # 執(zhí)行查詢 cursor.execute('SELECT * FROM users') # 最多獲取5行數據 rows = cursor.fetchmany(5) # 輸出查詢結果 for row in rows: print(row) # 關閉游標 cursor.close() # 關閉數據庫連接 conn.close()
到此這篇關于Python的sqlite3模塊中常用函數的文章就介紹到這了,更多相關Python sqlite3模塊內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方
本文主要介紹了Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧Chat?Gpt<BR>2023-07-07selenium+python 去除啟動的黑色cmd窗口方法
今天小編就為大家分享一篇selenium+python 去除啟動的黑色cmd窗口方法。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05