如何将HTML下拉列表中的值存储到Flask中的MySQL数据库
您好,我正在使用以下代码将在下面的html页面中输入的值保存到MySQL数据库。添加了下拉列表“RequestType”,但是当从“RequestType”中选择值并点击Submit按钮时遇到以下错误。将代码放在Flask和HTML中。请求您的帮助以解决此问题 TypeError:execute()接受2到3个位置参数,但给出了5个 烧瓶中使用的代码如下所示如何将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
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。。我的下一步是根据电子邮件搜索值,并获取名称和请求类型等值,更新它们并将其保存回数据库。。你能指导我做那件事吗。。。提前谢谢你的帮助如果你先尝试一下,我会更容易一些,这样我可以从你尝试过的开始帮助你。否则你的要求很笼统,我没有资格帮忙