gpt4 book ai didi

python - flask mysql db.execute 循环

转载 作者:行者123 更新时间:2023-11-29 18:07:57 25 4
gpt4 key购买 nike

我正在使用 python Flask 对 sql 数据库执行 db.execute。我需要为输入执行以下代码 [C4,C5,C6,C7, C8, C9, D7, D8, D9, D4, D5, D6, E7, E8, E9, E4, E5, E6] (所以继续替换C4 与所有其他输入)复制并粘贴下面的代码并进行最小的更改似乎效率不高,但我找不到执行循环的方法。如何对上面的列表进行循环?

C4 = request.form.get("C4")
db.execute("UPDATE user_table SET C4 = :C4 WHERE id = :id", id= session["user_id"], C4=C4)

最佳答案

您可以通过手动构建查询(听起来很脆弱,我同意)收集设置的条件和查询参数来一次性更新这些字段:

fields = ["C4", "C5", "C6", "C7", "C8", "C9", "D7", "D8", "D9", "D4", "D5", "D6", "E7", "E8", "E9", "E4", "E5", "E6"]

query = "UPDATE user_table SET "
conditions = []
params = {}

for field in fields:
conditions.append(" {field} = :{field} ".format(field=field))
params[field] = request.form.get(field)

query += ", ".join(conditions) + " WHERE id = :id"
db.execute(query, id=session["user_id"], **params)

那个fields定义 - 看看是否可以避免对列表进行硬编码并从request.form对象或其他地方动态获取它。

请注意,我们仍在正确参数化查询(除了无法参数化的列/字段名称 - 确保您信任字段的来源以避免潜在的 SQL injections )。

并且,考虑使用像 SQLAlchemy 这样的 ORM(因为您使用的是 Flask - 请查看 Flask-SQLAlchemy ) - 在这种情况下更新您的模型会更简单、更易读并且更不容易出错。

关于python - flask mysql db.execute 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47667051/

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