首页 > 解决方案 > 如何在 python 中自动计算 SQLalchemy 表中的字段?

问题描述

我有一个包含字段create_datedue_date. 我想due_date总是在 90 天之后create_date。我希望在due_date不插入该列的情况下自动生成该字段。从我所查找的内容来看,这似乎column_property是我需要的。

from sqlalchemy.orm import column_property

class MyTable(Base):
    __tablename__ = "my_table"
    created_date = Column(DateTime, default=datetime.utcnow)
    due_date = column_property(created_date + timedelta(days=90))

这段代码运行没有错误。该表已创建,但未创建 due_date 列。

标签: pythonsqlalchemy

解决方案


您需要使用Columnwith default,这样,SQLAlchemy 将due_date在首次创建对象时设置它是否为空:

def default_due_date(context):
    return context.get_current_parameters()['created_date'] + timedelta(days=90)

class MyTable(Base):
    __tablename__ = "my_table"
    created_date = Column(DateTime, default=datetime.utcnow)
    due_date = Column(DateTime, default=default_due_date)

基于这个关于如何将默认值基于另一个字段的值的问题。


推荐阅读