python - 在“with”关键字打开资源期间捕获异常
问题描述
举个具体的例子,以psycopg2
Postgres 为例(我知道mysql.connection
有类似的 API):
try:
with closing(connection.cursor()) as cursor:
... # run a transaction with cursor, like insert
except IntegrityError as e:
cursor.rollback()
在这种情况下,游标是否能够回滚,或者在这种情况下发生回滚之前是否会关闭游标资源?
解决方案
你能交换try:
和with ...
吗?
with closing(connection.cursor()) as cursor:
try:
... # run a transaction with cursor, like insert
except IntegrityError as e:
cursor.rollback()
except ...:
这样,当到达时,光标将处于当前范围内。
使用您的代码,何时except ...:
达到.cursor
None
推荐阅读
- r - rbind.na(row1, row2) 中的错误:找不到函数“rbind.na”
- java - Java 将字符串中的 \" 替换为 "
- jenkins - Jenkins Ant 模式获取带有时间戳的最新修改的 XLSX 文件
- python - 如何在PIL python中获取已旋转角度的文本的x,y坐标?
- angular - Ionic 3 模板解析错误:'add-thought' 不是已知元素
- java - Java 方法没有达到预期的效果。试图理解为什么
- android - CardView 内的 RecyclerView 和 Cardview 高度设置为环绕,它不是环绕高度
- c++ - 源矩形和目标矩形在 SDL 函数 SDL_RenderCopy 中如何工作
- python - 使用正则表达式提取数字
- android - 如何在没有通知的情况下为 android Oreo 创建后台服务,如社交网络应用程序 Facebook、Messenger、Zalo