python操作PG数据库出现current transaction is aborted,commands ignored until end of tranaact block

python操作PG数据库出现current transaction is aborted,commands ignored until end of tranaact block

出现这个问题的原因是sql代码在执行时出现错误,由于PG事务自身的保护机制,所以PG本身会将为锁定,这个时候如果需要跳过当前的错误继续执行,则按PG的规则,需要处理掉当前的错误。可以选择在数据库中直接处理掉当前出现的问题,然后重新执行Python脚本,但是这样的做法不是很推荐,如果数据量少且数据质量好的话,这个方式也只能说是可行的,但是不是高效的。而且就目前而言,各平台的数据质量还是很差的,所以就需要新的方式解决,在数据库中有另外一个规则是“事务回滚”。如果报错了,又不想要让程序停下来,我们可以让程序先执行,然后把所有的错误都保存下来,这样我们就可以批量的去处理所有的问题了。解决方案如下:

try: 

    执行的代码

except Exception as e:
    print(e)

    可以with open将记录保存

    conn.rollback()#让数据库中的事务进行回滚

这个解决方案适合对Python连接数据库较熟悉的人员,由于客观原因,代码不方便呈现,所以就希望看到的人能够读懂。其实只要知道我们就是在处理异常的时候将错误的sql语句进行了回滚并跳过即可

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值