更新时重新生成 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)
然后将其添加到会话中就可以了。
假设我的模型中有这样一个 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)
然后将其添加到会话中就可以了。