python - 如何在 python 中自动计算 SQLalchemy 表中的字段?
问题描述
我有一个包含字段create_date
和due_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 列。
解决方案
您需要使用Column
with 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)
基于这个关于如何将默认值基于另一个字段的值的问题。
推荐阅读
- javascript - 使用 css 或 javascript 悬停几秒钟后显示一条消息
- java - 有没有办法从 json 或 yml 而不是类中引用 swagger @ApiResponse 中的响应?
- node.js - 客户端上的 HTTP 响应标头
- git - 从 git 开始:排除忽略的文件是不可能的
- laravel - 如何从路由中获取键值对参数
- sql - 基于列值获取数据的 SQL 查询
- gcc - 双精度浮点数如何存储在内存中?
- wpf - 将 ItemsControl 绑定到非 ObservableCollection 会导致内存泄漏吗?
- c++ - C++ 专用方法模板产生多个定义错误
- regex - 如何为例如 a/b/c 创建 htaccess seo 友好的 url rewriterules