Подтвердить что ты не робот

Установка значения по умолчанию в sqlalchemy

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

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

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

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

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

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

4b9b3361

Ответ 1

Документация предоставляет следующие возможности по 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))]))

Ответ 2

Вы хотите server_default

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