SQLAlchemy и пустые столбцы - PullRequest
       16

SQLAlchemy и пустые столбцы

15 голосов
/ 14 февраля 2009

Когда я пытаюсь вставить новую запись в базу данных, используя SQLAlchemy, и я не заполняю все значения, он пытается вставить их как «Нет» (вместо того, чтобы пропустить их). Затем он жалуется на ошибки «не может быть нулевым». Есть ли способ сделать так, чтобы он просто опускал столбцы в запросе sql, если я также опускал их при объявлении экземпляра?

Ответы [ 2 ]

46 голосов
/ 14 февраля 2009

Чтобы добавить ответ Али А, это означает, что в определении столбца должно быть nullable=True, чтобы в столбце было разрешено NULL. Например:

email_address = Column(String, nullable=True)

Документы SQLAlchemy для таблиц и столбцов , выдержка из документа v1.2:

nullable - при значении False фраза «NOT NULL» будет добавлено при генерации DDL для столбца. Когда True, будет нормально ничего не генерировать (в SQL по умолчанию это «NULL»), за исключением некоторых очень конкретные крайние случаи, когда «NULL» может отображать в явном виде. По умолчанию True, если primary_key также не True, в котором если по умолчанию используется значение False. Этот параметр используется только при выдаче CREATE TABLE операторы.

15 голосов
/ 14 февраля 2009

Это проблема схемы базы данных, а не проблема SQLAlchemy. Если в вашей схеме базы данных есть столбец, который не может иметь значение NULL, вы должны поместить туда что-нибудь (то есть, не None). Или измените вашу схему, чтобы разрешить NULL в этих столбцах.

В Википедии есть статья о NULL и статья, описывающая ненулевые ограничения

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