跳转至

第八章:最佳实践

数据库设计

规范化

-- 避免数据冗余
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 进行数据存储和管理。