Попытайтесь, как я мог, я не могу правильно поймать sqlalchemy IntegrityError:
from sqlalchemy import exc
try:
insert_record()
except exc.IntegrityError, exc:
print exc # this is never called
handle_elegantly() # this is never called
Как и следовало ожидать:
IntegrityError: (IntegrityError) insert or update on table "my_table"
violates foreign key constraint "my_table_some_column_fkey"
Я попытался явно:
from sqlalchemy.exc import IntegrityError
UPDATE:
Я нашел что-то похожее на то, что происходит здесь, где Integrity Error не выбрасывается до тех пор, пока сеанс не будет сброшен на db, а после выполнения блоков try
/except
: Попытка поймать ошибку целостности с помощью SQLAlchemy
Однако добавление session.flush()
в блок try
дает InvalidRequestError
:
ERROR:root:This Session transaction has been rolled back due to a previous
exception during flush. To begin a new transaction with this Session,
first issue Session.rollback().
Original exception was: (IntegrityError)