2016-04-20 4 views
0

Ich habe ein Modell mit einem Primärschlüssel des Typs UUID. Benutzer können das Modell anhand seiner ID abfragen. Wenn ein Benutzer eine Nicht-UUID-ID eingibt, möchte ich in der Lage sein, den Fehler abzufangen und meine eigene Nachricht zu verwalten. DataErrors schließen jedoch die Transaktion und hindern mich daran, alle verbleibenden IDs zu überprüfen.SQLAlchemy DataError schließt die Transaktion

Wie kann ich die Transaktion erneut öffnen oder verhindern, dass sie geschlossen wird?

Code:

try: 
    some_model.query.filter_by(id=1).first() 
except DataError: 
    errors.append('failed :(') 

other_model.query.filter_by(id=valid_uuid).first() # InternalError - Would work if it came first. 

Fehler:

InternalError: (InternalError) current transaction is aborted, commands ignored until end of transaction block 
+1

Sie können nicht. Sie sollten Ihre Eingabe überprüfen, bevor Sie sie an Ihr RDBMS senden. – univerio

+0

@univerio Okay danke. Ich ging davon aus, dass ich meine Implementierung entfernt habe. Using sqlalchemy-utils UUIDType hat es behoben. –

Antwort

0

Meine Umsetzung der UUID Primärschlüsselspalte war schlecht. Ich habe meine Implementierung entfernt und stattdessen das Paket sqlalchemy-utils verwendet. Die UUIDType Säule war ein Ersatztropfen und entfernte die DataError s.

Verwandte Themen