gpt4 book ai didi

python - Alembic 迁移以将串行字段转换为整数

转载 作者:行者123 更新时间:2023-11-29 13:24:38 29 4
gpt4 key购买 nike

我最初将我的一个 SQLAlchemy 模型定义为:

class StreetSegment(db.Model):
id = db.Column(db.Integer, autoincrement=True) # surrogate ID
seg_id = db.Column(db.Integer, primary_key=True) # assigned in another system; don't increment

没有意识到 seg_id 会成为我的 Postgres 数据库中的 SERIAL 字段。我真正想要的是一个具有 PK 约束(无自动增量)的 INTEGER 字段。我像这样关闭了自动增量:

class StreetSegment(db.Model):
id = db.Column(db.Integer, autoincrement=True)
seg_id = db.Column(db.Integer, primary_key=True, autoincrement=False) # <--- see here

但是当我在 Alembic 中运行 migrate 时,更改没有反射(reflect)出来。我还尝试使用以下操作编写自定义迁移:

def upgrade():
op.alter_column('street_segment', 'seg_id', autoincrement=False)

def downgrade():
op.alter_column('street_segment', 'seg_id', autoincrement=True)

但这会给出警告 autoincrement and existing_autoincrement only make sense for MySQL。所以我的问题是:有没有什么方法可以使用 Alembic 将 SERIAL 转换为 Postgres 中的 INTEGER

最佳答案

只需将类型显式设置为您想要的类型即可。这应该有效:

op.alter_column('street_segment', 'seg_id', _type=Integer)

关于python - Alembic 迁移以将串行字段转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013279/

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