2016-07-20 133 views
1

我有这个注册页面,而在转换所有的参数,当我提出我收到此错误形式:不串中转换的所有参数格式错误:不是字符串格式化

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

发布追踪! – Alex

+0

是逗号错字'thwart(name),))'? – Jens

+0

@Jens我不认为这是,我不得不把这个奇怪的'thwart(名字),''上次我使用'cursor.execute' – pwnsauce

回答

1

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

的的execute秒参数应该是一个元组,你缺少一个,

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

我想你也不需要围绕%s(),但它取决于你的表的实际外观。

进一步澄清:

('str')将评估为字符串'str',不含有它的元组。

为了创建一个元组,您必须包含一个逗号:('str',)

+0

感谢您的帮助,因为我是新的这个我可以真正使用你的帮助 修复此错误后.. 现在我收到此错误:全局名称'名称'未定义 –