Python 如何在批量插入时只增加一次序列?

Python 如何在批量插入时只增加一次序列?,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,给出这样一个模型: class MyModel(Base): __tablename__ = 'my_model' id = Column(Integer, nullable=False, primary_key=True, index=True) value = Column(Numeric, doc='value') batch = Column(Integer, Sequence('my_model_batch_seq'), doc='Batch ID of

给出这样一个模型:

class MyModel(Base):
    __tablename__ = 'my_model'
    id = Column(Integer, nullable=False, primary_key=True, index=True)
    value = Column(Numeric, doc='value')
    batch = Column(Integer, Sequence('my_model_batch_seq'), doc='Batch ID of the update')
我想发布一个批插入,添加具有相同
batch
ID的所有新对象。下面的代码为每个对象递增,这不是我要查找的

objects = [
    MyModel(
        value=x,
    ) for x in range(10)
]
db.bulk_save_objects(objects)

如果我理解正确,您可以首先明确选择下一个值:

# Note that this may fail, if you haven't configured a bind on
# your Session.
batch = db.query(func.nextval('my_model_batch_seq')).scalar()
然后把它传下去:

objects = [
    MyModel(
        value=x,
        batch=batch,
    ) for x in range(10)
]
db.bulk_save_objects(objects)

首先显式选择nextval并将其与新对象一起传递?作为旁白,
nullable=False
index=True
在主键列上是多余的。@IljaEverilä谢谢,这很有意义。有没有比
batch=db.execute(“SELECT NEXTVAL('my_model_batch_seq'))”)更好的(sqlalchemy)方法呢?首先().NEXTVAL
db.query(func.NEXTVAL('my_model_batch_seq')).scalar()
,我想。