gpt4 book ai didi

python - SQLite 数据库不会用 Python 变量更新

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:54 25 4
gpt4 key购买 nike

我试图用一个变量更新(添加)一个名为“product_qty”的单元格在 SQLite 数据库中的整数值,代码行如下

x = int(TOPUPQTY.get())
cursor.execute("UPDATE 'product' SET product_qty = product_qty + x WHERE `product_name` LIKE ?", ('%'+str(TOPUPPRODUCT_NAME.get())+'%',))

我得到一个 sqlite3.OperationalError: no such column: x。但是当我尝试用常量 30 替换变量 x 时,即:

cursor.execute("UPDATE 'product' SET product_qty = product_qty + 30 WHERE `product_name` LIKE ?", ('%'+str(TOPUPPRODUCT_NAME.get())+'%',))

这工作得很好,但我需要使用变量而不是常量。

最佳答案

添加占位符“?”对于字符串中的变量。

x = 30
cursor.execute(f"UPDATE product SET product_qty = product_qty + ? WHERE product_name LIKE ?", (x, '%'+str(TOPUPPRODUCT_NAME.get())+'%',))

您不应该自己将 x 放入字符串中,例如使用格式化字符串,因为如果 x 的内容来自不受信任的来源,那么您就有可能获得 sql 注入(inject)。所以最好始终依赖 sqlite 包本身的格式。

关于python - SQLite 数据库不会用 Python 变量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59210542/

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