2016-04-20 51 views
0

我有一個帶有UUID類型主鍵的模型。用戶可以通過其ID來查詢模型。如果用戶輸入非uuid類型的id,我希望能夠捕獲錯誤並編組我自己的消息。但是,DataErrors會關閉事務並阻止我驗證所有其餘的ID。SQLAlchemy DataError關閉事務

如何重新打開交易或阻止交易結束?

代碼:

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. 

錯誤:

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

你不能。在將其發送到RDBMS之前,您應該驗證您的輸入。 – univerio

+0

@univerio好的,謝謝。我儘可能多地假設我刪除了我的實現。使用sqlalchemy-utils UUIDType修復了它。 –

回答

0

我的UUID主鍵列的執行較差。我刪除了我的實現,而是選擇使用sqlalchemy-utils包。 UUIDType列是替代品下降並刪除DataError