如何将HTML下拉列表中的值存储到Flask中的MySQL数据库

如何将HTML下拉列表中的值存储到Flask中的MySQL数据库,flask,Flask,您好,我正在使用以下代码将在下面的html页面中输入的值保存到MySQL数据库。添加了下拉列表“RequestType”,但是当从“RequestType”中选择值并点击Submit按钮时遇到以下错误。将代码放在Flask和HTML中。请求您的帮助以解决此问题 TypeError:execute()接受2到3个位置参数,但给出了5个 烧瓶中使用的代码如下所示 from flask import Flask, render_template, request, redirect from fla

您好,我正在使用以下代码将在下面的html页面中输入的值保存到MySQL数据库。添加了下拉列表“RequestType”,但是当从“RequestType”中选择值并点击Submit按钮时遇到以下错误。将代码放在Flask和HTML中。请求您的帮助以解决此问题

TypeError:execute()接受2到3个位置参数,但给出了5个

烧瓶中使用的代码如下所示

from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL


app = Flask(__name__)

# Configure db
#db = yaml.load(open('db.yaml'))
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
#app.config['MYSQL_PASSWORD'] = 'P@$$w0rd'
app.config['MYSQL_DB'] = 'flaskapp'




mysql = MySQL(app)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        # Fetch form data
        userDetails = request.form
        name = userDetails['name']
        email = userDetails['email']
        requesttype = userDetails.get('requesttype')
        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO users(name, email, requesttype) VALUES(%s, %s, [])", name, email, requesttype)
        mysql.connection.commit()
        cur.close()
        return 'Save is Successful'
    return render_template('index.html')
 <form method="POST" action="{{ url_for('index') }}">

    Name <input type="text" name="name" />
      <br>

    Email <input type="email" name="email" />
      <br> 
    RequestType <select id="RequestType" name = "RequestType" >
     <option selected value="1">New</option>
     <option value="0">Old</option>
    </select><br>  
    <input type="Submit">
    </form>
HTML代码如下所示。

from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL


app = Flask(__name__)

# Configure db
#db = yaml.load(open('db.yaml'))
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
#app.config['MYSQL_PASSWORD'] = 'P@$$w0rd'
app.config['MYSQL_DB'] = 'flaskapp'




mysql = MySQL(app)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        # Fetch form data
        userDetails = request.form
        name = userDetails['name']
        email = userDetails['email']
        requesttype = userDetails.get('requesttype')
        cur = mysql.connection.cursor()
        cur.execute("INSERT INTO users(name, email, requesttype) VALUES(%s, %s, [])", name, email, requesttype)
        mysql.connection.commit()
        cur.close()
        return 'Save is Successful'
    return render_template('index.html')
 <form method="POST" action="{{ url_for('index') }}">

    Name <input type="text" name="name" />
      <br>

    Email <input type="email" name="email" />
      <br> 
    RequestType <select id="RequestType" name = "RequestType" >
     <option selected value="1">New</option>
     <option value="0">Old</option>
    </select><br>  
    <input type="Submit">
    </form>

名称

电子邮件
请求类型 新的 古老的

以下各项应能起作用

def index():
    if request.method == 'POST':
        # Fetch form data
        userDetails = request.form
        name = userDetails['name']
        email = userDetails['email']
        requesttype = userDetails['RequestType']
        cur = mysql.connection.cursor()
        cur.execute("""INSERT INTO users (name, email, requesttype) VALUES (%s, %s, %s)""", (name, email, requesttype))
        mysql.connection.commit()
        cur.close()
        return 'Save is Successful'
     return render_template('index.html')

三个引号将防止MySQL中出现任何语法错误。另请注意
(姓名、电子邮件、请求类型)

处添加的括号。您是否尝试过将
值(%s,%s,[])
替换为
值(%s,%s,%s)
?你也会犯同样的错误吗?另外,在你的python文件中,
userDetails.get
上面写着
'requesttype'
,但在你的html文件中,名字写着
'requesttype'
,据我所知,它们应该完全匹配(区分大小写)。最后,作为一个一般性问题(我不是专家),为什么要使用
userDetails.get('requesttype')
而不是
userDetails['requesttype']
?例如,我成功地在MySql中插入了值,而没有使用
get
,无论它是
select
还是
input
嗨,谢谢你的回复。已执行建议的更改,但仍遇到相同的错误。你可以分享代码来做这件事吗。。但它总是保存“新”值,即使我从下拉选择中选择“旧”值。你能帮我一下吗?如果你删除
“selected”
,你会得到同样的错误吗?我无法在我当前的计算机上重现错误,因为我没有在这里安装Mysql和python。您好,谢谢您的回复,问题不在于代码。。问题出在HTML上..我们已经纠正了。。现在一切都好了。。干杯嗨,伙计。。很抱歉再次打扰你。。。现在,我可以将值保存到DB。。我的下一步是根据电子邮件搜索值,并获取名称和请求类型等值,更新它们并将其保存回数据库。。你能指导我做那件事吗。。。提前谢谢你的帮助如果你先尝试一下,我会更容易一些,这样我可以从你尝试过的开始帮助你。否则你的要求很笼统,我没有资格帮忙