Python mysql.connector.errors.ProgrammingError:SQL语句的参数不够

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

以下是我的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 = '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'是需要转义的保留字。