Python mysql.connector.errors.ProgrammingError:SQL语句的参数不够
以下是我的python代码:Python mysql.connector.errors.ProgrammingError:SQL语句的参数不够,python,mysql,Python,Mysql,以下是我的python代码: def update_product(self,code,name,weight,stock,sold,order,purchase): content = self.ids.scrn_product_contents content.clear_widgets() code = hashlib.sha256(code.encode()).hexdigest() sql = 'UPDA
def update_product(self,code,name,weight,stock,sold,order,purchase):
content = self.ids.scrn_product_contents
content.clear_widgets()
code = hashlib.sha256(code.encode()).hexdigest()
sql = 'UPDATE stocks SET product_code=%s,product_name=%s,product_weight=%s,in_stock=%s,sold=%s,order=%s,last_purchase=%s WHERE product_code=%s'
values =[code,name,weight,stock,sold,order,purchase]
self.mycursor.execute(sql,values)
self.mydb.commit()
prodz = self.get_products()
stocktable = DataTable(table=prodz)
content.add_widget(stocktable)
这是我的密码
这是一个错误
"Not enough parameters for the SQL statement")
mysql.connector.errors.ProgrammingError: Not enough parameters for the SQL statement
我遇到以下错误,需要帮助以消除此错误。查询中有8个
%s
占位符,但值中只有7个值。您缺少的值,其中product\u code=%s
也不需要设置product\u code
,因为您只需将其设置回已经具有的相同值即可
因此,将其更改为:
sql = '''UPDATE stocks
SET product_name=%s,product_weight=%s,in_stock=%s,sold=%s,`order`=%s,last_purchase=%s
WHERE product_code=%s'''
values =[name,weight,stock,sold,order,purchase,code]
order
是保留的wors,您需要用反勾号将其转义或重命名列。是否缺少产品代码的值?感谢您的关注亲爱的Barmar。我试过了,但它像这样出现了:mysql.connector.errors.ProgrammingError:1064(42000):您的SQL语法有一个错误;查看与MySQL服务器版本对应的手册,以了解在“order=”,last_purchase=”附近使用的正确语法,其中第1行的product_code='f791f9fc22abd4f10f0e16d2e7e9366868'是需要转义的保留字。