db.execute("UPDATE counters SET value = value + 1")
db.commit()
except Exception:
db.rollback()
raise
finally:
db.close()
复制代码
1.4 课后 Quiz
问题1:当出现数据库连接泄漏时,最大概配置哪个参数来缓解?
A. pool_size
B. max_overflow
C. pool_recycle
D. connect_args 答案分析:正确答案 B。max_overflow 控制答应超出 pool_size 的临时连接数量,当连接泄漏发生时,限制最大连接数可以防止系统资源耗尽。根本解决方案需要检查是否正确关闭会话。 问题2:Session 的 expire_on_commit 参数设置为 False 时会导致什么结果?
A. 提高查询性能
B. 对象属性过期需要重新查询
C. 大概读取到数据库过期数据
D. 自动提交事件 答案分析:正确答案 C。当 expire_on_commit=False 时,Session 提交后不会过期对象,后续访问属性大概读取缓存而非数据库最新值,导致数据不一致。
1.5 常见报错解决方案
错误1:sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table