2016-12-04 4 views
0

Ich verwende eine API, die je nach Abfrage unterschiedliche dicts zurückgibt. Also, weil ich nicht sicher sein kann, dass ich die gewünschten Schlüssel habe, verwende ich dict.get(), um zu vermeiden, eine KeyError zu erhöhen. Aber ich füge gerade diese Ergebnisse in eine Datenbank ein und möchte vermeiden, Zeilen mit None zu füllen.SQLite ignorieren Keine bei INSERT

Was wäre der bevorzugte Weg, um damit umzugehen?

+0

Mit was soll es gefüllt werden? Sie können der Funktion '.get()' ein zweites Argument liefern, das Ihr zweites Argument zurückgibt, wenn der Schlüssel nicht gefunden wird. wie folgt: 'dct.get ('key', 'default')' –

Antwort

1

Verwenden Sie NULL als Standardwert mit dict.get(). Wenn key in Ihrem Objekt dict nicht vorhanden ist, wird NULL anstelle von None zurückgegeben. 'NULL' in Datenbanken (am meisten) entspricht None in Python. Zum Beispiel:

>>> my_dict = {} 

#       v Returns `NULL` if key not found in `my_dict` 
>>> my_dict.get('key', 'NULL') 
'NULL' 

Im Fall haben Sie Spalte als NOT NULL, setzten sich als leere Zeichenkette. Zum Beispiel:

>>> my_dict.get('key', '') 
'' 
+0

Es gibt ein paar Spalten in der Datenbank, die 'NOT NULL' sind. Was dann? –

+1

@DavidMetcalfe: Überprüfen Sie den Update-Code. In diesem Fall können Sie es als leere Zeichenfolge festlegen –