Mam kod, w którym próbuję zapisać do bazy danych, aw niektórych przypadkach uzyskać (oczekiwany) integrityerror ze względu na ograniczenie wyjątkowości. Próbuję złapać błąd, ale z jakiegoś tajemniczego powodu nie mogę. Mój kod wygląda następująco (działa w pętli, uproszczony dla jasności):Dlaczego program psycopg2 IntegrityError nie jest przechwytywany?
from psycopg2 import IntegrityError
try:
data = {
'one': val1,
'two': val2
}
query=tablename.insert().values(data)
target_engine.execute(query)
except IntegrityError as e:
print "caught"
except Exception as e:
print "uncaught"
print e
break
Wyjście gdy uruchamiam skrypt wygląda tak:
uncaught
(psycopg2.IntegrityError) duplicate key value violates unique constraint "companies_x_classifications_pkey"
DETAIL: Key (company_id, classification_id)=(37802, 304) already exists.
[SQL: 'INSERT INTO companies_x_classifications (company_id, classification_id) VALUES (%(company_id)s, %(classification_id)s)'] [parameters: {'classification_id': 304, 'company_id': 37802L}]
To nawet nie drukuje „złowione”, tak nie sądzę, że mam uczciwość. Jednak kiedy wydrukuję błąd, jest to błąd integralności. Każda pomoc zostanie doceniona!
sukces! Wielkie dzięki, to było to. – Leo