Python連接SQLite數(shù)據(jù)庫操作實(shí)戰(zhàn)指南從入門到精通
連接到SQLite數(shù)據(jù)庫
SQLite是一種嵌入式數(shù)據(jù)庫引擎,它允許在應(yīng)用程序中創(chuàng)建和管理本地?cái)?shù)據(jù)庫文件。
Python提供了sqlite3模塊,可用于連接到SQLite數(shù)據(jù)庫。
import sqlite3
# 連接到數(shù)據(jù)庫(如果不存在則會創(chuàng)建)
conn = sqlite3.connect('mydatabase.db')上述代碼創(chuàng)建了一個名為mydatabase.db的SQLite數(shù)據(jù)庫文件(如果該文件不存在),并與該數(shù)據(jù)庫建立連接。可以根據(jù)需要更改數(shù)據(jù)庫文件的名稱。
創(chuàng)建表格
在SQLite數(shù)據(jù)庫中,數(shù)據(jù)以表格的形式存儲。要創(chuàng)建表格,使用SQL語句。
以下是一個示例,創(chuàng)建一個名為"students"的表格:
# 創(chuàng)建一個名為"students"的表格
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
)
''')
conn.commit()上述代碼創(chuàng)建了一個包含id、name和age字段的"students"表格。cursor.execute()用于執(zhí)行SQL語句,conn.commit()用于提交更改。
插入數(shù)據(jù)
要向表格中插入數(shù)據(jù),使用INSERT INTO語句。
以下是一個插入數(shù)據(jù)的示例:
# 插入一名學(xué)生的信息
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ('Alice', 25))
conn.commit()上述代碼將一名名為Alice的學(xué)生信息插入到"students"表格中。
查詢數(shù)據(jù)
使用SELECT語句,從表格中檢索數(shù)據(jù)。
以下是一個查詢數(shù)據(jù)的示例:
# 查詢所有學(xué)生的信息
cursor.execute("SELECT * FROM students")
students = cursor.fetchall()
for student in students:
print(student)上述代碼執(zhí)行SELECT語句并將結(jié)果存儲在students變量中,然后通過循環(huán)打印每個學(xué)生的信息。
更新和刪除數(shù)據(jù)
更新數(shù)據(jù),使用UPDATE語句;
刪除數(shù)據(jù),使用DELETE語句。
以下是更新和刪除數(shù)據(jù)的示例:
# 更新學(xué)生信息
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
# 刪除學(xué)生信息
cursor.execute("DELETE FROM students WHERE name = ?", ('Alice',))
conn.commit()上述代碼分別將學(xué)生Alice的年齡更新為26歲,并從表格中刪除了名為Alice的記錄。
異常處理
在進(jìn)行數(shù)據(jù)庫操作時,務(wù)必使用異常處理來處理可能發(fā)生的錯誤。
例如,如果數(shù)據(jù)庫文件無法創(chuàng)建或打開,或者SQL語句執(zhí)行失敗,都應(yīng)該處理這些異常情況。
try:
conn = sqlite3.connect('mydatabase.db')
# 數(shù)據(jù)庫操作
except sqlite3.Error as e:
print("SQLite error:", e)
finally:
conn.close()數(shù)據(jù)庫事務(wù)
SQLite支持事務(wù),這是一組數(shù)據(jù)庫操作的單元,要么全部成功,要么全部失敗。
使用commit()提交事務(wù),使用rollback()回滾事務(wù)。
# 開始一個事務(wù)
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
try:
# 執(zhí)行一些數(shù)據(jù)庫操作
cursor.execute("INSERT INTO students (name, age) VALUES (?, ?)", ('Bob', 30))
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (31, 'Bob'))
# 提交事務(wù)
conn.commit()
except sqlite3.Error:
# 發(fā)生錯誤,回滾事務(wù)
conn.rollback()
finally:
conn.close()數(shù)據(jù)庫索引
索引是數(shù)據(jù)庫中用于加速數(shù)據(jù)檢索的重要組成部分。在表格上創(chuàng)建索引以提高查詢性能。
# 在"students"表格的"name"字段上創(chuàng)建索引
cursor.execute("CREATE INDEX IF NOT EXISTS idx_name ON students (name)")
conn.commit()數(shù)據(jù)庫備份和恢復(fù)
定期備份數(shù)據(jù)庫以防止數(shù)據(jù)丟失是一個好習(xí)慣。通過復(fù)制數(shù)據(jù)庫文件來創(chuàng)建備份,或者使用SQLite的備份命令。
import shutil
# 創(chuàng)建數(shù)據(jù)庫備份
shutil.copy2('mydatabase.db', 'mydatabase_backup.db')安全性考慮
在將用戶提供的數(shù)據(jù)插入到數(shù)據(jù)庫之前,務(wù)必進(jìn)行適當(dāng)?shù)妮斎腧?yàn)證和數(shù)據(jù)清理,以防止SQL注入攻擊。
user_input = input("Enter a student name: ")
# 使用參數(shù)化查詢來避免SQL注入
cursor.execute("INSERT INTO students (name) VALUES (?)", (user_input,))
conn.commit()總結(jié)
SQLite是一種輕量級的嵌入式數(shù)據(jù)庫引擎,適用于各種應(yīng)用程序,從小型工具到大型數(shù)據(jù)驅(qū)動應(yīng)用程序。SQLite是一個強(qiáng)大且靈活的數(shù)據(jù)庫引擎,對于許多應(yīng)用程序都非常適用。
以上就是Python連接SQLite數(shù)據(jù)庫操作實(shí)戰(zhàn)指南從入門到精通的詳細(xì)內(nèi)容,更多關(guān)于Python SQLite數(shù)據(jù)庫操作的資料請關(guān)注腳本之家其它相關(guān)文章!
- Python使用Rich?type和TinyDB構(gòu)建聯(lián)系人通訊錄
- Python DBM模塊輕松使用小型數(shù)據(jù)庫存儲管理數(shù)據(jù)
- Python快速進(jìn)修指南之向量數(shù)據(jù)庫文本搜索
- Python?SQLAlchemy與數(shù)據(jù)庫交互操作完整指南
- Python使用cx_Oracle庫連接Oracle數(shù)據(jù)庫指南
- python實(shí)現(xiàn)MySQL?數(shù)據(jù)庫表格創(chuàng)建?數(shù)據(jù)插入及獲取插入ID操作教程
- Python數(shù)據(jù)庫安裝及MySQL?Connector應(yīng)用教程
- python TinyDB輕量級文檔導(dǎo)向數(shù)據(jù)庫輕松存儲訪問
相關(guān)文章
基于python實(shí)現(xiàn)matlab filter函數(shù)過程詳解
這篇文章主要介紹了基于python實(shí)現(xiàn)matlab filter函數(shù)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python檢查JSON文件語法的多種實(shí)現(xiàn)方法
本文介紹了在Python中檢查JSON文件語法的多種方法,包括使用標(biāo)準(zhǔn)庫json、jsonschema進(jìn)行結(jié)構(gòu)驗(yàn)證、使用json.tool命令行工具以及編寫完整的驗(yàn)證函數(shù),推薦使用內(nèi)置的json模塊,因?yàn)樗唵?、可靠且無需額外依賴,對于復(fù)雜項(xiàng)目,可以結(jié)合jsonschema進(jìn)行結(jié)構(gòu)驗(yàn)證2025-12-12
400多行Python代碼實(shí)現(xiàn)了一個FTP服務(wù)器
400多行Python代碼實(shí)現(xiàn)了一個FTP服務(wù)器,實(shí)現(xiàn)了比之前的xxftp更多更完善的功能2012-05-05
Python3 ID3決策樹判斷申請貸款是否成功的實(shí)現(xiàn)代碼
這篇文章主要介紹了Python3 ID3決策樹判斷申請貸款是否成功的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
[項(xiàng)目布局配置]Nosql與PythonWeb-Flask框架組合
本文主要描述了怎樣使用輕量級NoSQL數(shù)據(jù)庫與PythonWeb-Flask框架組合來進(jìn)行項(xiàng)目布局及應(yīng)用配置,需要的同學(xué)可以參考下,希望可以對大家有所進(jìn)益2021-08-08
Tornado服務(wù)器中綁定域名、虛擬主機(jī)的方法
這篇文章主要介紹了Tornado服務(wù)器中綁定域名、虛擬主機(jī)的方法,本人查看了Tornado才得的方法,特此分享,需要的朋友可以參考下2014-08-08

