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

news/2024/7/9 19:33:53 标签: mysql, postgresql

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语句进行了回滚并跳过即可

 

 


http://www.niftyadmin.cn/n/811079.html

相关文章

python实现插入排序

def insert_sort(): #前边写一个随机数据生成函数据,这边调用函数生成随机的数组 data data_from() #确定需要循环的次数 for i in rnage(1,len(data)): #确定待插入的数据 value data[i] #初始化待插入数据的索引值 insert_index -1 #将已排序的数据…

linux中执行sql脚本命令

由于工作需要,进行数据迁移。数据迁移的过程中,使用远程的数据库时,如果需要将一个很大的sql脚本的数据导入,在navicat执行是不可行的,navicat随时会崩溃,所以只能在服务器端进行导入。单个导入的文件大小为…

删除数据库显示有其他会话连接此数据库的解决方案

使用: select pg_terminate_backend(pd_stat_activity.pid) from pg_stat_activity where datname 要删除的数据库 and pid <> pg_backend_pid(); 先切断所有的连接&#xff0c;然后就可以执行删除语句了&#xff1a; drop database database_name;

如何判断一组字符中含有另一组字符串?

最近在看正则表达式&#xff0c;基本的使用已经没”有问题了&#xff0c;但是还不是能够特别的得心应手&#xff1b;在学习程序的时候&#xff0c;就曾想过一个问题&#xff1a;“对于程序员而言&#xff0c;只针对代码最想实现的是什么&#xff1f;” 当时给自己的答案是可以…

关于字符串重新提出以下问题

如何判断两组字符串相等&#xff1f; 如何判断一组字符串中包含另一组字符串&#xff1f; 可不可以从输入关键字的地方作为匹配开始的地方&#xff0c;然后向左和向右进行相关匹配&#xff1f; 字符串处理都是以单个字符串遍历实现的吗&#xff1f; 如何实现有效的控制每一…

利用python实现字符串中的关键字查询

此处进行字符串匹配利用的是多字符串进行的&#xff0c;单字符串更加灵活&#xff0c;但是复杂度也更高&#xff0c;所以先呈现多字符串的结果 def regex(): text today strs today is nice day for i in range(len(strs)-len(text)1): if text strs[i:ilen(text)]: print(…

阵列数据(二维结构化数据)中引入轴概念的理解

阵列数据中引入轴的概念&#xff0c;是新建了一个操作二维数据的新模型&#xff0c;在这个新模型中&#xff0c;轴可以发挥多大的作用&#xff1f;可以带来多大的便利呢&#xff1f;

python连接Oracle数据库报错Cannot locate a 64-bit Oracle Client library问题

python连接Oracle数据库报错Cannot locate a 64-bit Oracle Client library问题&#xff0c;报此问题错误的原因有很多种&#xff0c;其中一种是缺少oracle驱动&#xff0c;所以下载instantclient所对应的包即可&#xff0c;最好下载11.2版本的&#xff0c;其他的版本试过出错&…