是否可以在 SQLAlchemy 中创建列,该列将自动填充上次插入/更新时的时间?

2023-12-31

是否可以在 SQLAlchemy 中创建列,该列将在上次插入/更新时自动填充时间?

我创建了模型,继承自基类

class Base(object):
    def __tablename__(self):
        return self.__name__.lower()
    id = Column(Integer, primary_key=True)
    last_time = Column(TIMESTAMP, server_default=func.now())

Base = declarative_base(cls=Base)

class EntityModel(Base):
    __tablename__ = 'entities'
    settlement_id = Column(Integer, ForeignKey('settlements.id'), nullable=False)
    type = Column(String(20), nullable=False)
    level = Column(Integer, nullable=False, default=0)
    energy = Column(Float, nullable=False, default=0)
    position_x = Column(Integer, default=0)
    position_y = Column(Integer, default=0)

    def __repr__(self):
        return "<Entity('%s')>" % (self.type)

每次更新 EntityModel 时我想要last_time更新于system function.now()。我可以使用触发器在数据库级别上执行此操作,但如果可能的话,我宁愿在应用程序级别上执行此操作。


在 Base 类的最后一条语句中添加 onupdate ,如下所示:

from sqlalchemy.sql import func

last_time = Column(TIMESTAMP, server_default=func.now(), onupdate=func.current_timestamp())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 SQLAlchemy 中创建列,该列将自动填充上次插入/更新时的时间? 的相关文章

随机推荐