psycopg开启autocommit后多组合查询的事务机制及异常处理
关于psycopg autocommit模式下批量查询的事务行为
事务归属:当你开启autocommit的连接,并用分号拼接多个查询一次性执行时,这些查询会被放在单个事务中执行。执行完成后autocommit机制会自动提交该事务;若执行过程中出现异常,则自动回滚整个事务。
中间查询失败的后果:如果批量语句里某一条查询执行失败,整个批处理会立即终止,之前已执行的所有语句都会被回滚——相当于这一组查询从未执行过。
举个实际场景:假设拼接的create_table成功执行,但后续insert_data触发了唯一性约束错误,那么之前创建的表会被回滚,数据库里不会留下这个新表的痕迹。
另外提一句,这种用分号拼接多语句的写法虽然可行,但psycopg官方更推荐用executemany或分开调用execute来处理多语句场景,能避免一些潜在的语法冲突或事务控制问题。
内容的提问来源于stack exchange,提问作者planetp
相关产品推荐
相关产品推荐

