我尝试简单地删除
unique=True
约束并运行
flask db migrate
flask db upgrade
在命令行中,但是当我运行我的烧瓶应用程序时,我仍然收到
(sqlite3.IntegrityError) UNIQUE constraint failed
错误。
是否有一种简单的方法可以使用 Flask-migrate 来做到这一点,或者我应该切换到 alembic (我知道 Flask-migrate 只是围绕着它)?我不想删除整个表。感谢您的帮助!
Flask-Migrate,或者更确切地说 Alembic,将不会自动检测匿名约束。但您可以创建手动 Alembic 迁移文件来删除约束。
创建一个空的迁移文件:
flask db revision -m 'Drop unique constraint'
编辑文件以删除约束:
def upgrade():
op.drop_constraint("name_of_constraint", "table_name")
def downgrade():
op.create_index(...)
如果可能的话,我建议您从最初创建约束的迁移文件中复制
create_index
。
然后就可以正常升级数据库了:
flask db upgrade
“我正在将数据插入 SQLAlchemy 数据库。虽然数据插入成功,但我在执行唯一约束时遇到了麻烦。我尝试过设置 unique=True,但它似乎没有按预期工作。可以请有人建议如何在 SQLAlchemy 中正确执行唯一约束?提前感谢您的帮助。”