Ich benutze Python 2 mit psycopg2 v2.6.2. Ich bin eine Reihe von psycopg2 Befehle ausgeführt wird, und alle Fehler zu kontrollieren:Fehlerbehandlung in psycopg2 - ein Fehler scheint mehr zu erzeugen?
for r in records:
county = r[0]
q = 'INSERT INTO allparcels(county, geom) '
q += "SELECT %s, ST_Union(ST_Buffer(wkb_geometry, 0)) FROM parcel "
q += "WHERE county=%s"
print q % (county, county)
try:
cursor.execute(q, (county, county))
conn.commit()
except Exception, e:
print e
print e.pgerror
cursor.close()
conn.close()
Diese Datensätze für die ersten paar läuft, dann ich ERROR: current transaction is aborted, commands ignored until end of transaction block
in schneller Folge für den ganzen Rest der Reihen erhalten.
Seltsamerweise, wenn ich einen der späteren Befehle nehme und es direkt in meiner Datenbank laufe, funktioniert es gut. Ich denke, die späteren Fehler haben etwas mit psycopg2 und meiner Fehlerbehandlung zu tun, nicht mit dem SQL-Befehl.
Ich denke, ich muss den Fehler nicht korrekt behandeln. Ich möchte, dass mein Skript den Fehler druckt, und fahre dann glatt mit dem nächsten Befehl fort.
Wie soll ich das stattdessen tun?
Ehrfürchtig - vielen Dank! – Richard