當資料越來越多,CSV或JSON雖然好用,但在查詢、篩選、更新資料時效率並不高。
這時候,資料庫(Database)就是更強大的選擇。
在眾多資料庫系統裡,SQLite是最簡單入門的工具,因為它:
不需要額外安裝伺服器(內建在Python中)。
資料儲存在一個.db檔案中,方便攜帶。
適合小型到中型專案、原型開發。
1.建立與連接資料庫
Python提供sqlite3模組,我們可以直接使用:
import sqlite3
#建立/連接資料庫(檔案會存為 my_database.db)
conn = sqlite3.connect("my_database.db")
#建立游標物件
cursor = conn.cursor()
2.建立資料表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
email TEXT UNIQUE
)
""")
conn.commit() # 儲存變更
3.插入資料
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)",
("Alice", 25, "alice@example.com"))
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)",
("Bob", 30, "bob@example.com"))
conn.commit()
4.查詢資料
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
輸出範例:
(1, 'Alice', 25, 'alice@example.com')
(2, 'Bob', 30, 'bob@example.com')
5.更新資料
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice"))
conn.commit()
6.刪除資料
cursor.execute("DELETE FROM users WHERE name = ?", ("Bob",))
conn.commit()
7.與Python程式整合
通常我們會把資料庫操作包裝成函式:
def add_user(name, age, email):
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)",
(name, age, email))
conn.commit()
def get_users():
cursor.execute("SELECT * FROM users")
return cursor.fetchall()
#測試
add_user("Charlie", 22, "charlie@example.com")
print(get_users())
8.SQLite的優勢與限制
優勢
輕量級,免安裝伺服器。
適合桌面應用、小型網站、資料分析。
Python內建支援。
限制
不適合大型高併發系統(例如銀行系統)。
功能不如MySQL、PostgreSQL完整。
今天我們學習了SQLite與Python的整合,包括建立資料表、增刪改查(CRUD)操作,以及如何包裝成函式。
掌握這些技能後,你已經能夠開發一個基礎的資料庫應用程式,邁向真正的軟體工程實踐。