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

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

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

4b9b3361

Ответ 1

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

В Википедии есть статья об NULL и статья, в которой описывается non- Ограничения NULL

Ответ 2

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

email_address = Column(String, nullable=True)

SQLAlchemy docs для таблиц и столбцов, выдержка из v1.2 doc:

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