Python中如何使用sqlite3操作SQLite數據庫詳解
前言
在 Python 開發(fā)中,SQLite 是一種輕量級的關系型數據庫,它無需單獨安裝數據庫服務器,所有數據存儲在一個單獨的文件中,適用于小型應用、移動開發(fā)、數據分析等場景。Python 提供了內置的 sqlite3 模塊,方便我們操作 SQLite 數據庫。本文將詳細介紹 sqlite3 模塊的使用,包括數據庫連接、表操作、數據增刪改查(CRUD),以及常見的事務管理和參數化查詢,幫助你快速掌握 Python 操作 SQLite 數據庫的方法。
1. 為什么選擇 SQLite?
? 零配置:Python 內置支持,無需安裝額外數據庫服務。
? 文件存儲:數據庫僅是一個 .db 文件,便于管理。
? 輕量高效:適用于小型應用、測試環(huán)境、移動端存儲。
? SQL 支持:支持 SQL 語法,易于與其他數據庫遷移。
?? SQLite 適用場景:
- 桌面應用(如瀏覽器、記事本應用存儲用戶數據)。
- 移動應用(Android、iOS 本地數據庫)。
- 數據分析(存儲小型數據集,替代 CSV 文件)。
2. 連接 SQLite 數據庫
2.1 連接或創(chuàng)建數據庫
使用 sqlite3.connect() 連接數據庫:
import sqlite3
# 連接數據庫(如果不存在則創(chuàng)建)
conn = sqlite3.connect("example.db")
print("數據庫連接成功")
?? 特點:
- 如果
example.db存在,則連接它,否則自動創(chuàng)建該文件。
2.2 獲取游標(Cursor)
數據庫操作需要使用 游標對象(cursor):
cursor = conn.cursor()
?? 作用:
cursor.execute(sql)用于執(zhí)行 SQL 語句。cursor.fetchall()獲取查詢結果。
3. 創(chuàng)建表(CREATE TABLE)
使用 CREATE TABLE 語句創(chuàng)建數據庫表:
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
city TEXT
)
''')
conn.commit() # 提交更改
print("表創(chuàng)建成功")
?? 解析:
id INTEGER PRIMARY KEY AUTOINCREMENT:主鍵自增。TEXT NOT NULL:name必須有值。IF NOT EXISTS:避免重復創(chuàng)建表。
4. 插入數據(INSERT INTO)
4.1 插入單條數據
cursor.execute("INSERT INTO users (name, age, city) VALUES (?, ?, ?)",
("Alice", 25, "New York"))
conn.commit()
print("插入數據成功")
?? 注意:
?占位符 避免 SQL 注入。conn.commit()提交事務,否則數據不會保存。
4.2 插入多條數據(executemany())
users = [
("Bob", 30, "San Francisco"),
("Charlie", 28, "Los Angeles"),
("David", 35, "Seattle")
]
cursor.executemany("INSERT INTO users (name, age, city) VALUES (?, ?, ?)", users)
conn.commit()
print("批量插入成功")
?? 適用于:
- 批量寫入數據,避免多次
execute()提高效率。
5. 查詢數據(SELECT)
5.1 查詢所有數據
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
?? fetchall() 獲取所有數據,返回列表:
(1, 'Alice', 25, 'New York') (2, 'Bob', 30, 'San Francisco') (3, 'Charlie', 28, 'Los Angeles')
5.2 查詢單條數據(fetchone())
cursor.execute("SELECT * FROM users WHERE name = ?", ("Alice",))
user = cursor.fetchone()
print(user)
?? fetchone() 獲取單條數據,適用于查詢唯一記錄。
6. 更新數據(UPDATE)
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice"))
conn.commit()
print("數據更新成功")
?? 確保:
SET age = ?只更新age列,避免誤修改其他數據。
7. 刪除數據(DELETE)
cursor.execute("DELETE FROM users WHERE name = ?", ("David",))
conn.commit()
print("數據刪除成功")
?? 務必小心:
- 沒有 WHERE 條件會刪除所有數據!
- 先
SELECT確認數據是否存在。
8. 事務管理(commit() 和 rollback())
8.1 commit() 提交事務
conn.commit() # 確保數據寫入數據庫
?? 每次 INSERT、UPDATE、DELETE 后,都要 commit() 確保數據持久化。
8.2 rollback() 回滾事務
try:
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (100, "Charlie"))
raise Exception("模擬異常") # 模擬錯誤
conn.commit()
except Exception as e:
conn.rollback() # 發(fā)生錯誤時回滾
print("事務回滾:", e)
?? 作用:
- 如果操作失敗,回滾到上一次
commit(),防止錯誤影響數據庫。
9. 關閉數據庫連接
cursor.close()
conn.close()
print("數據庫連接已關閉")
?? 最佳實踐:
- 完成所有數據庫操作后,應關閉連接,釋放資源。
10. 結合 with 語句自動管理連接
Python 提供 with 語法,自動關閉數據庫連接:
with sqlite3.connect("example.db") as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
?? 優(yōu)勢:
- 自動 commit()
- 異常發(fā)生時自動 rollback()
- 退出時自動關閉 conn
11. 使用 Row 以字典方式訪問數據
默認 fetchall() 返回元組:
cursor.execute("SELECT * FROM users")
print(cursor.fetchone()) # (1, 'Alice', 25, 'New York')
可以改用 sqlite3.Row 使數據可用字典訪問:
conn.row_factory = sqlite3.Row # 設置行工廠
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
row = cursor.fetchone()
print(row["name"], row["age"]) # Alice 25
?? 適用于:
- 提高可讀性,避免
row[0]這樣的索引訪問方式。
12. 結論
| 操作 | 代碼示例 |
|---|---|
| 連接數據庫 | conn = sqlite3.connect("example.db") |
| 創(chuàng)建表 | CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER) |
| 插入數據 | INSERT INTO users (name, age) VALUES (?, ?) |
| 查詢數據 | SELECT * FROM users |
| 更新數據 | UPDATE users SET age = ? WHERE name = ? |
| 刪除數據 | DELETE FROM users WHERE name = ? |
| 事務管理 | commit() / rollback() |
| 關閉連接 | conn.close() |
sqlite3 是 Python 內置的數據庫模塊,適用于小型應用、測試、數據存儲等場景。掌握這些操作,你就可以輕松管理 SQLite 數據庫,提升開發(fā)效率!
總結
到此這篇關于Python中如何使用sqlite3操作SQLite數據庫的文章就介紹到這了,更多相關Python sqlite3操作SQLite內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python連接數據庫的3種方法對比(SQLite\MySQL\PostgreSQL)
- 在Python中使用SQLite數據庫進行增刪改查操作的代碼示例
- python連接sqlite3簡單用法完整例子
- 利用Python連接MySQL超詳細實戰(zhàn)教程
- Python進行SQLite和MySQL數據庫連接與操作的完整指南
- Python進行PostgreSQL數據庫連接的詳細使用指南
- 使用python進行PostgreSQL數據庫連接全過程
- Python連接PostgreSQL數據庫并查詢數據的詳細指南
- Python連接到PostgreSQL數據庫的方法詳解
- Python數據庫學習心得:SQLite、MySQL、PostgreSQL優(yōu)缺點
相關文章
Python程序打包工具py2exe和PyInstaller詳解
這篇文章主要介紹了Python程序打包工具py2exe和PyInstaller詳解,如果可以提前將程序打包成 Windows平臺的 .exe 文件或者是Linux下的 .sh 腳本,那么使用起來就會方便很多,需要的朋友可以參考下2019-06-06
使用 Supervisor 監(jiān)控 Python3 進程方式
今天小編就為大家分享一篇使用 Supervisor 監(jiān)控 Python3 進程方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
tensorflow中tf.reduce_mean函數的使用
這篇文章主要介紹了tensorflow中tf.reduce_mean函數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04

