1064, “Você tem um erro na sintaxe SQL;…” Python MySQL
Então, eu trabalho nisso desde a última sexta-feira e não consigo contornar esse erro:
1064, "Você tem um erro na sintaxe SQL; verifique o manual que corresponde à versão do servidor MySQL para obter a sintaxe correta perto de '[u'161010-035670'] WHERE order_id = 87 'na linha 1" ou algo junto as mesmas linhas que esse erro.
Basicamente, meu python captura dados do banco de dados MySQL, cria um caso no SalesForce usando o Simple-Salesforce e consulta esse caso criado corretamente, mas preciso que ele escreva esse número de caso no banco de dados em uma coluna que criei especificamente para o ticket número.
Código atual:
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()
O principal problema é com esta linha de código:
cursor.execute("UPDATE rma_order SET rma_num=%s WHERE order_id=%s" % (data, Id))
Eu tentei com e sem '% s' sem nenhuma diferença, tentei "... WHERE order_id =% s", (data, Id)) com o mesmo erro. Se eu substituir "order_id = 87" e deixar os dados permanecerem com cursor.execute ("UPDATE rma_order SET rma_num =% s WHERE order_id = 87"% (data)), funcionará bem e gravará o número do caso no formato correto em o banco de dados, assim que adiciono "Id" como um fator com% s, isso gera erros. Eu também tentei com% d com o mesmo resultado.
Qualquer ajuda seria muito apreciada.