You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中HTML下拉框值存入MySQL遇TypeError错误求助

解决Flask中MySQL execute()参数错误的问题

嘿,这个错误我之前也踩过坑,咱们来一步步搞定它:

错误原因分析

你碰到的TypeError: execute() takes from 2 to 3 positional arguments but 5 were given,核心问题出在两个地方:

  1. SQL语句的占位符写错了:你把第三个字段的占位符写成了[],这不符合MySQL参数化查询的语法,应该用%s。
  2. 参数传递方式错误:cursor.execute()方法要求第二个参数是一个包含所有占位符对应值的序列(元组或列表),而你现在把name、email、requesttype作为三个单独的参数传进去了,导致参数数量超标。

另外还有一个小细节需要注意:你的HTML里下拉列表的name属性是RequestType,但Flask代码里用的是requesttype = userDetails.get('requesttype'),大小写不一致会导致无法正确获取下拉框的选中值,这个也要一并修正。

修正后的代码

1. Flask代码调整

把SQL语句的占位符修正,同时把参数打包成元组传递:

from flask import Flask, render_template, request, redirect
from flask_mysqldb import MySQL
app = Flask(__name__)

# Configure db
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']
        # 这里统一name属性的大小写,和HTML保持一致
        requesttype = userDetails.get('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')

2. HTML代码调整(可选,如果你想保持name属性小写的话)

如果不想修改Flask里的字段名,也可以把HTML下拉列表的name改成小写:

<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>

验证一下

现在重新运行Flask应用,填写表单并提交,应该就能正常把数据插入到MySQL数据库里啦!

内容的提问来源于stack exchange,提问作者kitees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:23:13