gpt4 book ai didi

python - 使用 Flask/Python 索引超出范围

转载 作者:行者123 更新时间:2023-12-03 17:00:33 24 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序并遇到以下代码的一些问题。我有一个需要更新值的数据库。当我尝试更新值时,我得到一个索引超出范围错误,但是当我只使用 python 运行代码而不使用 web 部件时,它运行并按预期执行。我无法弄清楚当我尝试它时发生了什么变化部分包含 flask 和 HTML 表单。这是我更新数据库的代码;

编辑::经过更多测试后,将我需要的数据推回/poplesson 的表单似乎存在一些问题。如果更改这些行;

user_id = request.form['clientid']
pck_id = request.form['packageid']


user_id = 1
pck_id = 1

它会按计划工作,但这不是我需要的,因为我需要从数据库中提取这些 ID。
@app.route("/poplesson", methods=['GET', 'POST'])
def poplesson():
if request.method == 'GET':
return render_template('view_packages.html')
elif request.method == 'POST':
con = sqlite3.connect('utpg.db')
db = con.cursor()
user_id = request.form['clientid']
pck_id = request.form['packageid']
package = db.execute("SELECT * FROM packages WHERE client_id = ?;", (user_id, ))
result = package.fetchall()
privatelessons = result[0][4] ##Without flask this run, with flask this throws an index error.
pop = privatelessons - 1
db.execute("UPDATE packages SET privatelesson = ? WHERE client_id = ? AND pck_id = ?;", (pop, user_id, pck_id, ))
con.commit()
return render_template('view_packages.html')

这是我用来显示 HTML 并从表单中获取值的代码。
<table>
{% for col in items %}
<tr>
<td>{{ col['pck_id'] }}</td>
<td>{{ col['client_id'] }}</td>
<td>{{ col['date'] }}</td>
<td>{{ col['price'] }}</td>
<td>{{ col['privatelesson'] }}</td>
<td>{{ col['shortgamelesson'] }}</td>
<td>{{ col['playinglesson'] }}</td>
<td>{{ col['notes'] }}</td>
<td><form class="form-container" action="/deletepackage" method="POST">
<input class="form-field" value="{{ col['pck_id'] }}" name="packageid" /> <br />
<input class="submit-button" type="submit" value="DELETE Package" /> </form>
</td>
<td><form class="form-container" action="/poplesson" method="POST">
<input class="form-field" value="{{ col['client_id'] }}" name="clientid" /> <br />
<input class="form-field" value="{{ col['pck_id'] }}" name="packageid" />
<input class="submit-button" type="submit" value="Subtract Private Lesson" /></form></td>
</tr>
{% endfor %}
</table>
</body>

如果我只在 python 中执行此部分,它会按预期运行并使用查看的数据库我可以看到数据库已更新。有什么想法吗?
    con = sqlite3.connect('utpg.db')
db = con.cursor()
user_id = request.form['clientid']
pck_id = request.form['packageid']
package = db.execute("SELECT * FROM packages WHERE client_id = ?;", (user_id, ))
result = package.fetchall()
privatelessons = result[0][4] ##Without flask this run, with flask this throws an index error.
pop = privatelessons - 1
db.execute("UPDATE packages SET privatelesson = ? WHERE client_id = ? AND pck_id = ?;", (pop, user_id, pck_id, ))
con.commit()

最佳答案

我可以想到两个可能的原因:

  • 使用/不使用 Flask 的数据库配置不同
  • 查看 type和您的user_id 的值(value)在这两个代码中。可能会有所不同。
  • 关于python - 使用 Flask/Python 索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39822159/

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