2017-07-21 1 views
1

Ich habe eine Methode erstellt, die die Daten aus der Datenbank abruft, sie in das json-Format konvertiert und die JSON-Antwort zurückgibt.Python ValueError: 'Wörterbuch Update Sequenzelement # 0 hat die Länge 4; 2 ist erforderlich '

Die Methode löst diese Fehlermeldung aus - ValueError: 'Wörterbuchaktualisierungssequenzelement # 0 hat die Länge 4; 2 ist erforderlich‘

Trace -

>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/ 
updateEchoResource.py(123)getEchoResource() 
-> row = self.cursor.execute("SELECT * FROM echo_resource_log WHERE 
    DATE(last_update) = CURDATE();") 
(Pdb) n 
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/ 
    updateEchoResource.py(124)getEchoResource() 
-> if row: 
(Pdb) n 
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/ 
    updateEchoResource.py(125)getEchoResource() 
-> response = 
    app.response_class(response=json.dumps(dict(self.cursor.fetchall())), 
    status=200, mimetype='application/json') 
(Pdb) n 
    ValueError: 'dictionary update sequence element #0 has length 4; 2 is 
    required' 
>/app/worker/echo/apps/opsware_flask_rest_app/opsware_flask_rest_app/ 
    updateEchoResource.py(125)getEchoResource() 

Zeile zurückgegeben -

('n3pvap168', 'X2Linux_NSS', 'Contact does not exist in Contacts table', datetime.datetime(2017, 7, 21, 4, 27, 37)) 
+1

Können wir die genaue Fehlerspur sehen? –

+0

@Wintro Hinzugefügt die Spur in der ursprünglichen Frage. –

+0

Können Sie einen Datensatz von 'cursor' holen und ausdrucken und uns zeigen? –

Antwort

2

Ein Python-Wörterbuch wie Sie wahrscheinlich eine ungeordnete Menge von Schlüssel-Wert-Paare wissen ist. Daher muss jeder Eintrag in einem Wörterbuch einen Schlüssel und einen Wert enthalten. Was passiert hier ist, dass Sie versuchen, eine Folge von vier Objekten in ein Wörterbuch wie von Ihrer Zeile gezeigt zu konvertieren (daher der Fehler erwartete Länge 2, bekam Länge 4).

Um dies zu beheben, müssen Sie Ihre 4-Längen-Datenstruktur in eine 2-Längen-Datenstruktur konvertieren. Dies kann durch Erstellen eines Arrays der Länge 2 und Speichern der Zeichenfolge, die Sie als Schlüssel verwenden möchten, im 0-Index des Arrays und des Rests Ihrer Zeile im 1-Index erfolgen. Sie können dies möglicherweise mithilfe von Slicing erreichen.

Verwandte Themen