首页 > 解决方案 > 如何从烧瓶中的用户输入中获取表名?

问题描述

@app.route("/CreateAScheme",methods=['GET','POST'])
def CreateAScheme():
    if request.method == 'POST':
         userDetails = request.form
         Scheme = userDetails['Scheme']
         con = MySQL.connection.cursor()
         con.execute("CREATE TABLE %s (id int NOT NULL AUTO_INCREMENT, Course varchar(255) NOT NULL, Year varchar(255), PRIMARY KEY(id));",(Scheme))
         MySQL.connection.commit()
         con.close()
         flash("Succesfully Created")
         return "Succesfully"
    return render_template('index.html')

我收到一个错误“并非所有参数都在字符串格式化期间转换”

标签: pythonphpmysqlflaskflask-mysql

解决方案


只需将变量包装在括号中,就像您正在做的(Scheme)那样什么都不做。

.execute()需要一个参数元组,无论它是否只是一个 1 元组,即(Scheme,)

con.execute(
  "CREATE TABLE %s (id int NOT NULL AUTO_INCREMENT, Course varchar(255) NOT NULL, Year varchar(255), PRIMARY KEY(id));",
  (Scheme,)
)

推荐阅读