gpt4 book ai didi

python - 没有自动增量的sqlalchemy主键

转载 作者:IT老高 更新时间:2023-10-28 21:00:02 26 4
gpt4 key购买 nike

我正在尝试建立一个布局大致如下的表格:

class Widget(db.Model):
__tablename__ = 'widgets'
ext_id = db.Column(db.Integer, primary_key=True)
w_code = db.Column(db.String(34), unique=True)
# other traits follow...

所有字段值都是通过外部系统提供的,并且会发现新的小部件,并且一些省略的 trait 值可能会随着时间(非常缓慢地)发生变化,但 ext_id 和 w_code 保证是唯一的。鉴于 ext_id 值的性质,它的行为理想地充当主键。

但是,当我创建一条新记录并指定 ext_id 值时,该值不会在存储中使用。相反, ext_id 中的值遵循自动增量行为。

>>> # from a clean database
>>> skill = Widget(ext_id=7723, w_code=u'IGF35ac9')
>>> session.add(skill)
>>> session.commit()
>>> Skill.query.first().ext_id
1
>>>

如何向 SQLAlchemy 指定 ext_id 字段应用作主键字段而不自动递增?

注意:我可以添加一个额外的合成 id 列作为主键,并使 ext_id 成为唯一列,但这既使我的代码复杂化,又给数据库和所有 I/O 添加了(最小的)额外膨胀。我希望避免这种情况。

问题源于一个较大的项目,但我能够创建一个较小的重现。

使用 sqlite 进行测试

最佳答案

设置 autoincrement=False禁用为主键创建序列或序列。

ext_id = db.Column(db.Integer, primary_key=True, autoincrement=False)

关于python - 没有自动增量的sqlalchemy主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498991/

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