Python - как не останавливать выполнение скрипта при ошибке?
На первой части скрипта при неуникальных данных в вставляемых элементах возникает ошибка останавливающая скрипт. Как сделать чтобы возникающая ошибка не останавливала выполнение скрипта, и скрипт выполнял дальнейшую работу? В моем понимании в случае ошибки 1го"try:", должен обрабатываться 2й"try:" но этого не происходит....
Ошибка: cur.execute(sql_update) psycopg2.errors.InFailedSqlTransaction: ОШИБКА: текущая транзакция прервана, команды до конца блока транзакции игнорируются
def table_update():
conn = psycopg2.connect( dbname user host password)
cur = conn.cursor()
try:
cur.execute("insert into us(A,B,C,D,F,G) "
"VALUES (%s,%s,%s,%s,%s,%s)", us_table)
except:
print("Error")
try:
update = "UPDATE us set(A,B,C,D,F,G) = "
where = " WHERE A = "
sql_update = update + str(tuple(us_table)) + where +
"'" + us_table[0] + "'"
cur.execute(sql_update)
except KeyError as e2:
print("Error", e2)
conn.commit()
cur.close()
conn.close()
Ответы (1 шт):
Автор решения: traderr
→ Ссылка
В каждом try нужны свои open/close конекшн. Print после первого except:тоже ставить нельзя он не позволят второй функции запуститься. Правильно будет так:
def table_update():
try:
conn = psycopg2.connect( dbname user host password)
cur = conn.cursor()
cur.execute("insert into us(A,B,C,D,F,G) VALUES (%s,%s,%s,%s,%s,%s)", us_table)
conn.commit()
cur.close()
conn.close()
print("insert ok")
except:
try:
update = "UPDATE us set(A,B,C,D,F,G) = "
where = " WHERE A = "
sql_update = update + str(tuple(us_table)) + where +
"'" + us_table[0] + "'"
cur.execute(sql_update)
conn.commit()
cur.close()
conn.close()
print("update ok")
except KeyError as e:
print("Error", e)