====== 第三十二章:SQLite数据库 ======
===== 本章目标 =====
完成本章学习后,你将能够:
* 使用sqlite3模块
* 执行SQL语句
* 处理事务
* 防止SQL注入
===== 基础操作 =====
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE
)
''')
# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)",
("Alice", "alice@example.com"))
conn.commit()
# 查询
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
===== 上下文管理器 =====
import sqlite3
# 使用上下文管理器
with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
# 自动提交/回滚
===== 参数化查询 =====
import sqlite3
conn = sqlite3.connect('example.db')
# 安全的参数化查询(防止SQL注入)
name = "Alice'; DROP TABLE users; --"
conn.execute("SELECT * FROM users WHERE name = ?", (name,))
# 批量插入
users = [("Bob", "bob@example.com"), ("Charlie", "charlie@example.com")]
conn.executemany("INSERT INTO users (name, email) VALUES (?, ?)", users)
conn.commit()
===== 本章练习 =====
1. 实现用户管理CRUD
2. 实现事务处理
3. 实现数据库迁移工具
下一章:[[python_course:chapter33|第三十三章:MySQL数据库]]