2009-02-14 17 views
12

Quando provo a inserire un nuovo record nel database utilizzando SQLAlchemy e non riempio tutti i valori, tenta di inserirli come "Nessuno" (invece di ometterli). Si lamenta quindi degli errori "non può essere nulla". C'è un modo per aver semplicemente omettere le colonne dalla query sql se le omesso anche quando dichiaro l'istanza?SQLAlchemy e colonne vuote

risposta

13

Questo è un problema di schema del database, non un problema di SQLAlchemy. Se lo schema del tuo database ha una colonna che non può essere NULL, devi inserire qualcosa (ad esempio, non None). O modificare lo schema per consentire NULL in quelle colonne.

Wikipedia contiene una voce about NULL e un articolo che descrive non-NULL constraints

39

da aggiungere alla risposta da Ali A, questo significa che è necessario avere nullable=True nella definizione della colonna, in modo che NULL è permesso nella colonna. Per esempio:

email_address = Column(String, nullable=True) 

SQLAlchemy docs for Tables and Columns, estratto da v1.2 doc:

annullabile - Se impostato su False, farà sì che la frase “NOT NULL” per essere aggiunti durante la generazione DDL per la colonna . Se True, normalmente non genera nulla (in SQL questo valore predefinito è "NULL"), ad eccezione di alcuni casi di edge specifici specifici del backend in cui "NULL" può rendere esplicitamente . Il valore predefinito è True a meno che il tasto primary sia anch'esso True, in cui il caso è impostato su False. Questo parametro viene utilizzato solo quando si emettono le istruzioni CREATE TABLE .

+5

questo più direttamente risponde alla domanda – 10flow

Problemi correlati