我尝试用一个变量更新(添加)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())+'%',))
这工作得很好,但我需要使用变量而不是常量。你知道吗
添加占位符“?”对于字符串中的变量。你知道吗
你不应该把x放在字符串中,比如用格式化字符串,因为如果x的内容来自不可信的源,那么你就有可能得到sql注入。所以最好总是依赖sqlite包本身的格式。你知道吗
在双引号中写入变量x,当cursor语句执行时,它试图在表中查找列x,这就是发生错误的原因。你知道吗
必须使用占位符将变量的值传递给查询。你知道吗
相关问题 更多 >
编程相关推荐