2016-07-20 5 views
1

ich diese Anmeldeseite haben und wenn ich Absenden des Formulars ich diese Störung erhalte: nicht alle während Zeichenfolge konvertiert Argumente FormatierungFehler: nicht alle während Zeichenfolge konvertiert Argumente Formatierung

class RegistrationForm(Form): 
email = StringField('Email address') 
password = PasswordField('password') 
name = StringField('Name') 

@app.route('/register/', methods=['GET', 'POST']) 
def register(): 
try: 
    form = RegistrationForm(request.form) 
    if request.method == 'POST': 
     email = form.email.data 
     password = sha256_crypt.encrypt((str(form.password.data))) 
     con = connection() 
     cur=con.cursor() 
     x = cur.execute("SELECT * FROM user WHERE username = (%s)",(thwart(email))) 
     if int(x) > 0: 
      return render_template('register.html',form=form) 
     else: 
      cur.execute("INSERT INTO user (username,password,name) VALUES (%s,%s,%s);",(thwart(email),thwart(password),thwart(name),)) 
      con.commit() 
      cur.close() 
      con.close() 
      return redirect(url_for('dashboard')) 

    return render_template('register.html', form=form) 
except Exception as e: 
    return str(e) 
+0

Post die Spur! – Alex

+0

ist das Komma ein Tippfehler '(Name),))'? – Jens

+0

@Jens Ich denke nicht, dass es war, ich musste dieses seltsame 'dwarte (Name),' 'letztes Mal, das ich' cursor.execute' verwendete – pwnsauce

Antwort

1

x = cur.execute("SELECT * FROM user WHERE username = (%s)",(thwart(email)))

Die zweites Argument von execute sollte ein Tupel sein, die Sie vermissen ein ,:

cur.execute("SELECT * FROM user WHERE username = (%s)",(thwart(email),))

Ich denke, dass Sie auch nicht die () um die %s benötigen, aber es hängt davon ab, wie Ihre Tabelle tatsächlich aussieht.

weitere Klarstellung:

('str') wird auf die Zeichenfolge auswerten 'str', nicht zu einem Tupel es enthält.

Um ein Tupel zu erstellen, müssen Sie ein Komma einfügen: ('str',).

+0

danke für Ihre Hilfe, wie ich neu in diesem ich bin könnte wirklich Ihre Hilfe verwenden nach der Behebung dieses Fehlers .. jetzt bekomme ich diesen Fehler: globalen Namen 'Name' ist nicht definiert –

Verwandte Themen