Установка значения по умолчанию в sqlalchemy - PullRequest
35 голосов
/ 14 марта 2012

Я хотел бы установить значение столбца по умолчанию, основанное на другой таблице в моей модели SQLAlchemy.

В настоящее время у меня есть это:

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

Что мне нужно (примерно) это:

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

Как я могу реализовать это в SQLAlchemy?

Ответы [ 2 ]

32 голосов
/ 14 марта 2012

Документация предоставляет следующие возможности для default:

Скаляр, вызываемый Python или ClauseElement, представляющий значение по умолчанию значение для этого столбца, который будет вызываться при вставке, если это в противном случае столбец не указан в предложении VALUES вставки.

Вы можете использовать простую функцию или просто использовать select() объект .

В вашем случае, возможно, что-то вроде:

from sqlalchemy.sql import select, func
...
Column('version', Integer, default=select([func.max(1,
    func.max(version_table.c.old_versions))]))
5 голосов
/ 30 октября 2017

Вы хотите server_default

Column('version', Integer, server_default="SELECT MAX(1, MAX(old_versions)) FROM version_table")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...