是否可以从列中删除唯一约束?

问题描述 投票:0回答:2

我尝试简单地删除

unique=True
约束并运行

flask db migrate
flask db upgrade

在命令行中,但是当我运行我的烧瓶应用程序时,我仍然收到

(sqlite3.IntegrityError) UNIQUE constraint failed
错误。

是否有一种简单的方法可以使用 Flask-migrate 来做到这一点,或者我应该切换到 alembic (我知道 Flask-migrate 只是围绕着它)?我不想删除整个表。感谢您的帮助!

python sqlite sqlalchemy alembic flask-migrate
2个回答
5
投票

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

0
投票

“我正在将数据插入 SQLAlchemy 数据库。虽然数据插入成功,但我在执行唯一约束时遇到了麻烦。我尝试过设置 unique=True,但它似乎没有按预期工作。可以请有人建议如何在 SQLAlchemy 中正确执行唯一约束?提前感谢您的帮助。”

© www.soinside.com 2019 - 2024. All rights reserved.