1064, “Tiene un error en su syntax SQL; …” Python MySQL

Así que he estado trabajando en esto desde el viernes pasado y no puedo evitar este error:

1064, “Tiene un error en su syntax SQL; consulte el manual que corresponde a la versión de su servidor MySQL para obtener la syntax correcta para usar cerca de ‘[u’161010-035670’] DONDE order_id = 87 ‘en la línea 1” o algo similar Las mismas líneas que este error.

Básicamente, mi python tomará datos de la base de datos MySQL, creará un caso en SalesForce usando Simple-Salesforce y luego consultará ese caso creado correctamente, pero necesito que escriba ese número de caso nuevamente en la base de datos en una columna que creé específicamente para el ticket. número.

Código actual:

for rowx in xrange(1, sheet.nrows): SN = sheet.row_values(rowx, start_colx=3, end_colx=None)[0] print SN Id = sheet.row_values(rowx, start_colx=6, end_colx=None)[0] print Id d = sf.query("SELECT CaseNumber FROM Case WHERE Serial_Number__c ='%s' AND Status = 'New Portal RMA'" % SN) data = [e["CaseNumber"] for e in d["records"]] print (data) try: con = MySQLdb.connect(user=ur, passwd=pd, host=ht, port=pt, db=db) cursor = con.cursor() cursor.execute("UPDATE rma_order SET rma_num=%s WHERE order_id=%s" % (data, Id)) con.commit() except Error as error: print(error) finally: cursor.close() con.close() 

El problema principal es con esta línea de código:

  cursor.execute("UPDATE rma_order SET rma_num=%s WHERE order_id=%s" % (data, Id)) 

He intentado con y sin ‘% s’ sin diferencia, probé “… DONDE order_id =% s”, (datos, Id) con el mismo error. Si sustituyo “order_id = 87” y dejo que los datos permanezcan allí con cursor.execute (“UPDATE rma_order SET rma_num =% s DONDE order_id = 87″% (data)), entonces funciona bien y escribe el número de caso en el formato correcto en La base de datos, tan pronto como agrego “Id” como un factor con% s, me da errores. También he intentado con% d con el mismo resultado.

Cualquier ayuda sería muy apreciada.

Related of "1064, “Tiene un error en su syntax SQL; …” Python MySQL"

El valor de los data es una lista y está intentando formatearlo en la consulta. Y, no use el formato de cadena para insertar variables en una consulta ; en su lugar, use una parametrización de consulta adecuada:

 cursor.execute(""" UPDATE tplinkus_rma.rma_order SET rma_num=%s WHERE order_id=%s""", (data[0], Id)) 

Observe cómo los parámetros de consulta se colocan en una tupla y se pasan como un argumento separado.