我想设置一个基于SQLAlchemy模型中另一个表的列默认值。
目前我有这个:
Column('version', Integer, default=1)
我需要的是(大致)这个:
Column('version', Integer, default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
如何在SQLAlchemy中实现它?
答案 0 :(得分:31)
documentation为default
提供了以下可能性:
表示默认值的标量,Python可调用或ClauseElement 此列的值,如果这样,将在插入时调用 否则,插入的VALUES子句中未指定column。
您可以考虑使用简单的功能,或者您可以使用select()
object。
在你的情况下,可能有以下几点:
from sqlalchemy.sql import select, func
...
Column('version', Integer, default=select([func.max(1,
func.max(version_table.c.old_versions))]))
答案 1 :(得分:5)
Column('version', Integer, server_default="SELECT MAX(1, MAX(old_versions)) FROM version_table")