gpt4 book ai didi

python - 在生产中将复合主键添加到辅助关联表

转载 作者:行者123 更新时间:2023-11-29 14:27:35 25 4
gpt4 key购买 nike

我有一个包含设置错误的表格:

ass_table = Table('ass', db.Model.metadata,
Column('id1', db.Integer, db.ForeignKey('class1.id')),
Column('id2', db.Integer, db.ForeignKey('class2.id')),
)

我真的应该将 primary_key=True 添加到 ColumnsPrimaryKeyConstraint('id1', 'id2', name='silly_me')

它最初创建的 alembic 自动生成代码是:

op.create_table('ass',
sa.Column('id1', sa.Integer(), nullable=True),
sa.Column('id2', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['id2'], ['class2.id'], ),
sa.ForeignKeyConstraint(['id1'], ['class1.id'], )
)

而且我确认我的 Postgres 数据库没有在 ass 表上建立主键。

现在添加代码不会自动生成用于迁移我的数据库的 alembic 脚本。

添加必要的复合主键的最佳做法是什么?不会中断或破坏现有数据在生产中?

最佳答案

我不知道 alembic,但要在纯 postgres 中执行此操作,我会执行以下操作:

CREATE UNIQUE INDEX CONCURRENTLY silly_me_idx ON ass(id1, id2);
ALTER TABLE ass ADD CONSTRAINT silly_me_pkey PRIMARY KEY USING INDEX silly_me_idx;

关于python - 在生产中将复合主键添加到辅助关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56191839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com