【发布时间】:2018-10-16 22:17:48
【问题描述】:
我正在使用 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 %}
通过将所需数据呈现给表单,查询工作正常,问题是它只在表单上插入第一个数据。无论如何我可以在一条路线内解决这个问题吗?或者有更好的方法吗?
【问题讨论】:
-
你试过了吗:resultValue = cur.execute('''
; '') -
我没有尝试过,但是来自“
”的数据必须在上面的 HTML 表单上呈现,并插入回另一个带有额外 col 的表。你认为它会那样工作吗? @Mika72 -
您似乎循环了一个循环变量,请将
for i , id in enumerate(id):更改为for i , id in enumerate(oracle_id): -
嘿冻糕。我相应地更改了代码,但和以前一样,总是从表单中插入第一条记录。 HTML表单有什么问题吗?