2009-02-14 28 views
12

Cuando intento insertar un nuevo registro en la base de datos utilizando SQLAlchemy y no llene todos los valores, intenta insertarlos como "Ninguno" (en lugar de omitirlos). Luego se queja de los errores "no puede ser nulo". ¿Hay alguna forma de que omita columnas de la consulta sql si también las omití al declarar la instancia?SQLAlchemy y columnas vacías

Respuesta

13

Este es un problema de esquema de base de datos, no un problema de SQLAlchemy. Si su esquema de base de datos tiene una columna que no puede ser NULL, debe colocar algo (es decir, no ninguno) allí. O cambie su esquema para permitir NULL en esas columnas.

Wikipedia tiene un artículo about NULL y un artículo que describe non-NULL constraints

39

Para añadir a la respuesta de Ali A, esto significa que usted necesita tener nullable=True en su definición de la columna, por lo que se permite que NULL en la columna. Por ejemplo:

email_address = Column(String, nullable=True) 

SQLAlchemy docs for Tables and Columns, extracto de v1.2 doc:

anulable - Cuando se establece en False, hará que la frase “NOT NULL” para ser añadió al generar DDL para la columna . Cuando sea True, normalmente no generará nada (en SQL esto tiene como valor predeterminado "NULL"), excepto en algunos casos muy específicos de extremos específicos del back-end donde "NULL" puede mostrar explícitamente. El valor predeterminado es True a menos que primary_key también sea True, en cuyo caso se establece en False. Este parámetro solo se usa al emitir estados CREATE TABLE.

+5

esto más directamente responde a la pregunta – 10flow