在提交许多查询时,python psycopg2如何忽略一些内部错误

在提交许多查询时,python psycopg2如何忽略一些内部错误,python,commit,psycopg2,rollback,Python,Commit,Psycopg2,Rollback,我在使用python psycopg2提交一些查询时遇到了一些问题,下面是我的代码: db = psycopg2.connect(database="**", user="**", password="**", host="**", port="**") cursor = db.cursor() cursor.execute("***") # actually I have many cursor.execute() db.commit() 我的问题是,当提交这么多查询时,如果在其中一些查询中

我在使用python psycopg2提交一些查询时遇到了一些问题,下面是我的代码:

db = psycopg2.connect(database="**", user="**", password="**", host="**", port="**")
cursor = db.cursor()
cursor.execute("***") # actually I have many cursor.execute()
db.commit()
我的问题是,当提交这么多查询时,如果在其中一些查询中出现错误,整个提交程序都会死掉,我怎么能忽略这些错误并提交其余的查询呢

我试着做点什么:

db = psycopg2.connect(database="**", user="**", password="**", host="**", port="**")
cursor = db.cursor()
cursor.execute("***") # many cursor.execute()
for i in range(3):
    try:
        db.commit()
        break
    except Exception, e:
        db.rollback()
        log.write(traceback.format_exc() + "\n\n sql error: " + e.pgerror)
        time.sleep(1.5)

但是它似乎不起作用,有人能帮我吗?

你能不能不做下面的事情

db = psycopg2.connect(database="**", user="**", password="**", host="**", port="**")
cursor = db.cursor()
for i in range(3):
    try:
        cursor.execute("***")
    except Exception, e:
        db.rollback()
    else:
        db.commit()

你不改为做下面的事情吗

db = psycopg2.connect(database="**", user="**", password="**", host="**", port="**")
cursor = db.cursor()
for i in range(3):
    try:
        cursor.execute("***")
    except Exception, e:
        db.rollback()
    else:
        db.commit()

您可以使用
db.autocommit=True
进行无事务处理。或者,您可以使用
保存点
回滚到保存点
sql语句。

您可以不使用事务,使用
db.autocommit=True
。或者,您可以使用
SAVEPOINT
rollbacktosavepoint
sql语句。

谢谢!我会再检查一遍。谢谢!我会再次检查。autocommit=True似乎可以完美地解决我的问题,这里给出一些有关我问题的详细信息。非常感谢!autocommit=True似乎完美地解决了我的问题,这里给出一些关于我的问题的细节。非常感谢!