更新时重新生成 SQLalchemy 序列

Regenerate SQLalchemy Sequence on update

假设我的模型中有这样一个 class:

class Sample(Base):
    __tablename__ = 'sample'
    id = Column(Integer, primary_key=True)
    firstname = Column(String(50))
    lastname = Column(String(50))
    auto_generated_code = Column(
        Integer, 
        Sequence('sample_auto_generated_code_sequence'),
        unique=True
    )

当我将实例添加到 Sample class 时,刷新会话后,我的实例会自动获得一个整数。到目前为止一切顺利。

我还想要的是,当我更新上述实例的任何其他列时,它应该自动获得一个新的 auto_generated_code。 简而言之,我希望我的 Sequence 也能在 update 上生成另一个代码。我怎样才能做到这一点?

我找到了一个答案,我们可以像这样在 Sqlalchemy 中获取 Sequence 对象:

from sqlalchemy import Sequence

seq = Sequence('sample_auto_generated_code_sequence')

然后我们可以通过在我们的连接或会话上执行它来获取下一个序列

instance.auto_generated_code = session.execute(seq) # or conn.execute(seq)

然后将其添加到会话中就可以了。