簡體   English   中英

sqlalchemy主鍵沒有自動增量

[英]sqlalchemy primary key without auto-increment

我正在嘗試建立一個大致如下的布局表:

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...

所有字段值都是通過外部系統提供的,並且會發現新的Widgets,並且一些省略的特征值可能會隨着時間的推移而變化(非常漸進),但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添加(最小)額外膨脹。 我希望避免這種情況。

問題起源於一個更大的項目,但我能夠創建一個較小的repro。

用sqlite測試

設置autoincrement=False以禁用為主鍵創建序列或序列。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM