我想設置一個基於SQLAlchemy模型中另一個表的列默認值。在sqlalchemy中設置默認值
目前我有這樣的:
Column('version', Integer, default=1)
我需要的是(大約)這樣的:
Column('version', Integer, default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
我如何在SQLAlchemy中實現這一點?
我想設置一個基於SQLAlchemy模型中另一個表的列默認值。在sqlalchemy中設置默認值
目前我有這樣的:
Column('version', Integer, default=1)
我需要的是(大約)這樣的:
Column('version', Integer, default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
我如何在SQLAlchemy中實現這一點?
的documentation給出default
以下可能性:
的標量,Python的可調用,或ClauseElement表示否則未指定此 柱爲此列,這將在插入件要調用的默認 值在插入的VALUES子句中。
您可以使用一個簡單的函數來研究,或者您可以只使用一個select()
object。
from sqlalchemy.sql import select, func
...
Column('version', Integer, default=select([func.max(1,
func.max(version_table.c.old_versions))]))
Column('version', Integer, server_default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
我知道的能力,但由於某種原因,我似乎無法制定:
在你的情況,可能沿東西線_right_查詢。如果你能提供他們,我會喜歡一些細節。 – 2012-03-14 17:14:06
@ChrisR:用示例更新了答案。 – voithos 2012-03-14 17:22:52
這真的很接近......但在version_table中沒有記錄的情況下,max()返回NULL。 – 2012-03-14 19:32:15