Явно установите значение столбца в NULL, если для столбца в SqlAlchemy установлено значение по умолчанию. - PullRequest
1 голос
/ 14 апреля 2020

У меня есть таблица, определенная как:

class Thing(Base):
    __tablename__ = "things"

    my_field = Column(Text, nullable=True, default=lambda c: "default")

(В моей реальной реализации функция по умолчанию более сложна, но я подумал, что уместно сказать, что я использую функцию для генерации значения по умолчанию. )

Я хотел бы иметь возможность явно установить значение my_field в NULL в некоторых случаях. Я попытался:

thing = Thing(my_field=None)

Но после Session.add(thing); Session.commit() значение по умолчанию генерируется функцией и записывает поверх моего явного None. Есть ли способ использовать стандартное значение по умолчанию, но иногда явно устанавливать значение Null для столбца?

1 Ответ

2 голосов
/ 14 апреля 2020

Это связано с причудой в SQLAlchemy ORM. Даже если вы явно установите значение None в столбце со значением по умолчанию, оно будет обрабатываться так, как если бы значение не было установлено. Вам нужно использовать конструкцию null SQL, чтобы обойти эту проблему. См. Принудительное NULL для столбца со значением по умолчанию для более подробной информации.

from sqlalchemy import null

thing = Thing(my_field=null())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...