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

2024-09-29 17:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用一个变量更新(添加)SQLite数据库表中名为“product\u qty”的单元格的整数值,代码行如下

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。 但是当我试着用一个常量来替换变量x,比如说30,那就是:

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

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


Tags: nameexecutesqlitegetupdateproductwherecursor
2条回答

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

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

你不应该把x放在字符串中,比如用格式化字符串,因为如果x的内容来自不可信的源,那么你就有可能得到sql注入。所以最好总是依赖sqlite包本身的格式。你知道吗

双引号中写入变量x,当cursor语句执行时,它试图在表中查找列x,这就是发生错误的原因。你知道吗

必须使用占位符将变量的值传递给查询。你知道吗

相关问题 更多 >

    热门问题