Python I';我使用一个INSERT查询在mysql表中插入,有';我的语法有错误

Python I';我使用一个INSERT查询在mysql表中插入,有';我的语法有错误,python,mysql,Python,Mysql,我得到的错误是:你的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用接近“1”值(“wb”)的正确语法,其中第1行的第_ID=123”部分有两个错误,我可以在您的insert查询中看到: 正如其他人指出的,insert语句没有where子句。您需要将其删除,或者需要将插入更改为更新。但是,这不是导致错误消息的错误 使用z变量作为插入的列的名称z是一个数字。正如mysql手册上所说: 标识符可以以数字开头,但除非引用,否则不能仅由数字组成 因此,您需要引用z中的值: x

我得到的错误是:你的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解使用接近“1”值(“wb”)的正确语法,其中第1行的第_ID=123”部分有两个错误,我可以在您的insert查询中看到:

  • 正如其他人指出的,
    insert
    语句没有
    where
    子句。您需要将其删除,或者需要将
    插入
    更改为
    更新
    。但是,这不是导致错误消息的错误

  • 使用
    z
    变量作为插入的列的名称
    z
    是一个数字。正如mysql手册上所说:

  • 标识符可以以数字开头,但除非引用,否则不能仅由数字组成

    因此,您需要引用
    z
    中的值:

    x = self.npprocess_PTE.text()
        y = 123
        if len(self.npprocess_PTE.text()) == 0:
           print("yes") 
        else:
           model = QtGui.QStandardItemModel()
           self.npprocessview_LV.setModel(model)
           z = model.rowCount()
           z = z + 1
           a = str(z)+'_Process'
           b = "INSERT INTO new_part_info(%s) VALUES(%s) WHERE Part_ID = %s"
           c = (z, x, y)
           mycursor.execute(b, c)
           mydb.commit()
    
    然后在执行插入时使用
    w
    代替
    z
    。或者,您需要使用
    a
    变量而不是
    z
    ,因为它创建为:

    w = '`' + str(z) + '`'
    

    实际上,这取决于表中列的名称。

    insert语句不接受where条件,请删除where条件并重试……尽管这并不能解释错误消息“您不能将where与insert一起使用”。在这里看到更多:非常感谢@Shadow。消除了我所有的疑虑
    a = str(z)+'_Process'