第八章:最佳实践¶
数据库设计¶
规范化¶
-- 避免数据冗余
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT UNIQUE
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
amount REAL
);
连接管理¶
上下文管理器¶
import sqlite3
from contextlib import contextmanager
@contextmanager
def get_db():
conn = sqlite3.connect('example.db')
try:
yield conn
finally:
conn.close()
# 使用
with get_db() as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
备份恢复¶
备份数据库¶
import shutil
# 备份
shutil.copy('example.db', 'example.db.backup')
# SQLite 在线备份
import sqlite3
source = sqlite3.connect('example.db')
backup = sqlite3.connect('example.db.backup')
with backup:
source.backup(backup)
source.close()
backup.close()
安全考虑¶
参数化查询¶
# 安全:参数化查询
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))
# 不安全:字符串拼接
# cursor.execute(f"SELECT * FROM users WHERE name = '{name}'")
适用场景¶
SQLite 适用场景:
✓ 移动应用本地存储
✓ 桌面应用数据存储
✓ 嵌入式设备
✓ 测试和原型开发
✓ 小型网站
SQLite 不适用场景:
✗ 高并发写入场景
✗ 大规模数据处理
✗ 需要客户端/服务器架构
小结¶
最佳实践要点:
- 数据库设计:规范化、避免冗余
- 连接管理:上下文管理器
- 备份恢复:shutil、在线备份
- 安全考虑:参数化查询
- 适用场景:移动应用、桌面应用、小型网站
完成本教程后,你应该能够熟练使用 SQLite 进行数据存储和管理。