Ich habe Python-Thread-Anwendung + Postgres. Ich verwende Django's ORM , um in Postgres zu speichern.
Ich habe gleichzeitige Speichern von Anrufen. Gelegentlich speichern 2 Threads mit dem gleichen Primärschlüssel , der zu einem Problem führt.Gewinde-Anwendung + IntegrityError
Postgres log:
ERROR: Nachschlüssel Wert gegen eindeutige Einschränkung "store_pkey"
STATEMENT: INSERT INTO "store" ("store_id", "Adresse") VALUES (E'HAN277' , E'101 Ozean Straße ')
Code:
Im Code sehe ich einen IntegrityError. Ich habe verschiedene Möglichkeiten ausprobiert dies zu handhaben.
a.
Versuch:
a.save()
außer IntegrityError:
Pass
Dies verursacht InternalError
b. Versuchte Transaktion Rolle zurück zu tun .. aber nicht sicher .. Soweit ich verstehen Sie deutliche müssen speichern Anrufe Transaktionen haben
sid = transaction.savepoint()
try:
row.save()
except IntegrityError, e:
transaction.savepoint_rollback(sid)
pass
transaction.commit()
Der erste Speicherpunkt nicht mit
Attribute: Objekt ‚NoneType‘ hat kein Attribut 'Cursor'
a. Ich lese irgendwo django ist nicht 100% threadsicher. Ist es eine gute Wahl in meinem Anwendungsfall. Ich benutzte bereits Django für andere Anwendungen und brauche ein ORM .. So wählte ich natürlich Django
b. Wie man mit dieser Situation umgeht .. Irgendwelche Kommentare.
Danke und Gruß, Ramya
Yup .. Dank einer Tonne .. Ich war mit (1, 0, 2, 'final', 0) .. ich auf Version bewegt (1, 1, 0, 'final', 0) und Die Fehler sind verschwunden. – Ramya