Veritabanına yazmayı denediğim bazı kodlar var ve bazı durumlarda benzersiz bir kısıtlama nedeniyle (beklenen) bir dürüstlük elde edersiniz. Hatayı yakalamaya çalışıyorum ama bazı gizemli sebepler için yapamam. Kodum (netlik için basitleştirilmiş bir döngüde, çalışan) aşağıdaki gibidir:Neden psycopg2 IntegrityError yakalanmıyor?
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
Senaryonun şöyle çalıştırmak çıkışı:
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}]
Hiçbir zaman bile baskılar "yakalandı", yani Bir dürüstlüğüm olduğunu düşünmüyorum. Ancak hatayı yazdırdığımda, bir bütünlük hatasıdır. Herhangi bir yardım takdir edilecektir!
Başarı için
psycopg2
istisna sarar! Çok teşekkürler, öyleydi. – Leo