在sqlalchemy中设置默认值

时间:2012-03-14 16:34:15

标签: python sqlalchemy

我想设置一个基于SQLAlchemy模型中另一个表的列默认值。

目前我有这个:

Column('version', Integer, default=1)

我需要的是(大致)这个:

Column('version', Integer, default="SELECT MAX(1, MAX(old_versions)) FROM version_table")

如何在SQLAlchemy中实现它?

2 个答案:

答案 0 :(得分:31)

documentationdefault提供了以下可能性:

  

表示默认值的标量,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)

您需要server_default

Column('version', Integer, server_default="SELECT MAX(1, MAX(old_versions)) FROM version_table")