2017-02-02 4 views
2

Versuchen, mich selbst Python zu lehren. Ich habe eine einfache Web-App, die den Wert eines Formularfeldes annimmt, es einer Variablen namens "new_quote" zuweist und diese in ein "content" -Feld in einer SQLite-Tabelle einfügt.Iteration über Nichtsequenz Fehler mit Python-Webformular

Wenn ich die Taste auf der Web-Formular getroffen, ich bin ein Typeerror bekommen ...

<type 'exceptions.TypeError'>: iteration over non-sequence 
     args = ('iteration over non-sequence',) 
     message = 'iteration over non-sequence' 

Es ist nicht die Linie unten mögen, aber ich bin mir nicht sicher, wohin sie gehen aus Hier.

Das CGI-Skript zum Hinzufügen des Angebots zur DB ist unten wiedergegeben. Jeder Rat würde geschätzt werden.

#!/usr/bin/env python 

import sqlite3 
import cgi 

import cgitb 
cgitb.enable() 

# This code takes the content of the form and assigns it to a variable called new_quotes. 

form = cgi.FieldStorage() 
new_quote = form.value[(0)] 

# Items from new_quotes are pushed into the DB in the code below. 

for each_item in new_quote: 

    connection = sqlite3.connect("quotes.sqlite") 
    cursor = connection.cursor() 
    content = new_quote[each_item].content 
    cursor.execute("INSERT INTO quotes(content) VALUES (?)") 
    connection.commit() 
    connection.close() 

Antwort

0

Sie versuchen, über das Objekt selbst zu iterieren, was den Fehler zurückgibt. Sie wollen über die Liste innerhalb des Objekts iterieren,

+0

Ok danke für den Tipp. Ich nenne das eine bestimmte Instanz des Objekts "new_quote" angeben. Ich änderte die for-Schleife, um so zu sehen ... 'für jedes_Element in neuer_Quelle.new_quote:' Jetzt bekomme ich diesen Fehler : MiniFieldStorage-Instanz hat kein Attribut 'neue_quote' – Trey

+0

Wirklich herausgefunden gerade eben. Danke für deinen Tipp! – Trey