SqlAlchemy/ALembic迁移-如何忽略错误并应用迁移



我有以下迁移:

def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
try:
op.drop_index('idx_token_attribute_name', table_name='token_index')
except Exception:
logger = logging.getLogger()
logger.info('idx_token_attribute_name does not exist on token_index')
# ### end Alembic commands ###

我遇到的问题是,有时,索引并不存在。在这种情况下,我希望它安静地失败,并且仍然应用此迁移。然而,由于事务失败,而且它从不回滚,我得到以下错误:

(psycopg2.errors.InFailedSqlTransaction) current transaction is aborted, commands ignored until end of transaction block

如何忽略错误并应用迁移?

您可以使用v1.12.0及更高版本的标志if_exists=True(alembic文档(。

def upgrade():
op.drop_index('idx_token_attribute_name', table_name='token_index', if_exists=True)

最新更新