gpt4 book ai didi

python - 如何从单个 Flask 路由执行两个 SQL 命令

转载 作者:行者123 更新时间:2023-11-29 03:18:26 24 4
gpt4 key购买 nike

我正在使用 Flask 创建一个网络应用程序。我在 MySql 数据库中有一些表。我想要的只是将一个表数据查询到一个表单并进行一些更改并将该数据插入回另一个表。我有这条路线

我对代码进行了此更改。

@app.route('/attendance', methods=  ['GET','POST'])
def attendance():
cur = connection.cursor()
resultValue = cur.execute('''SELECT * FROM employee_data WHERE team = "ta15"''')
if resultValue > 0:
userDetails = cur.fetchall()
return render_template('take_attendance.html', userDetails=userDetails)

if request.method == 'POST':
userDetails = request.form
oracle_id = userDetails.getlist('oracle_id')
name = userDetails.getlist('name')
status = userDetails.getlist('status')
remark = userDetails.getlist('remark')
stmt= "insert into attendance( id, name, status, remark) VALUES(%s, %s, %s, %s)"
for i , id in enumerate(id):
cur.excutemany(stmt, (id[i], name[i], status[i], remark[i]))
cur.commit()

$这是我的表格

{% for data in userDetails %}

<tr>

<td><input type="text" name="oracle_id" id="oracle_id" size="6" value="{{data.oracle_id}}"></td>

<td><input type="text" name="name" id="name" size="20" value="{{data.name}}"></td>
<td>
<select name="status">

<option value="-1">select..</option>
<option value="A">A</option>
<option value="TR" selected>1160</option>
<option value="DR">1122</option>
<option value="OR">1020</option>

</select></td>
<td>
<select name="shift">
<option value="-1">select..</option>
<option value="Morning">7</option>
<option value="Afternoon" selected>15:00</option>
</select>
</td>
<td><textarea rows="1" cols="20" name="remark"></textarea></td>
</tr>
{% endfor %}

查询通过将所需数据呈现到表单而正常工作,问题是它仅在表单上插入第一个数据。无论如何我可以在一条路线内解决这个问题吗?或者有更好的方法吗?

最佳答案

首先,当你这样做时,你只要求一个数据 block :

user = request.form
oracle_id = user['id']

改为使用getlist

ids = request.form.getlist('id')
name = request.form.getlist('name')

然后:

stmt = "insert into today( id, name, status, remark) VALUES(%s, %s, %s, %s)"
for i, id in enumerate(ids):
cur.executemany(stmt, (id, name[i],.......))
cur.commit()

类似的东西,努力吧,我已经给你提供了提示。

其次,您可以在单个路由中使用 GET POST 来区分您的 SELECT 和 INSERT 请求。只需做这样的事情:

if request.method == 'POST':
#insert sql part here
else:
#get sql part here

建议:我强烈推荐使用模型,它可以让您的代码保持简单,并帮助您将凌乱的应用程序变成干净的应用程序。您可以阅读有关 Python SqlAlchemy 的信息,您可以使用一些简单的示例。

您可以使用这些模型调用查询和插入或更新函数来顺利处理它。

关于python - 如何从单个 Flask 路由执行两个 SQL 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50208600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com