数据库
首页 > 数据库> > 1064“您的SQL语法有错误;…” Python MySQL

1064“您的SQL语法有错误;…” Python MySQL

作者:互联网

因此,自上周五以来,我一直在从事此工作,但无法解决此错误:

1064, “You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘[u’161010-035670′] WHERE order_id=87’ at line 1″ or something
along the same lines as this error.

基本上,我的python将从MySQL数据库中获取数据,它使用Simple-Salesforce在SalesForce中创建一个案例,然后查询它是否正确创建了该案例,但是我需要它将该案例编号写回到我专门为票证创建的列中数.

当前代码:

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()

主要问题在于以下代码行:

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

我尝试使用“%s”和不使用“%s”没有区别,尝试使用“ … WHERE order_id =%s”,(数据,ID)),并出现相同的错误.如果我替换“ order_id = 87”,然后使用cursor.execute(“ UPDATE rma_order SET rma_num =%s WHERE order_id = 87”%(数据))将数据保留在那里,那么它可以正常工作,并以正确的格式写入案例编号数据库中,一旦我将“ Id”添加为%s的因数,它就会给我错误.我也尝试了%d,但结果相同.

任何帮助将不胜感激.

解决方法:

数据值是一个列表,您正在尝试将其格式化为查询.而且,请勿使用字符串格式将变量插入查询中,而应使用适当的查询参数化:

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

注意查询参数如何放置在元组中并作为单独的参数传递.

标签:python-2-7,mysql-python,python,mysql,salesforce
来源: https://codeday.me/bug/20191118/2025429.html