【问题标题】:1064, "You have an error in your SQL syntax;..." Python MySQL1064, "您的 SQL 语法有错误;..." Python MySQL
【发布时间】:2017-02-19 07:31:03
【问题描述】:

所以我从上周五开始一直在处理这个问题,并且无法解决这个错误:

1064, "您的 SQL 语法有错误;请查看手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 '[u'161010-035670'] WHERE order_id=87' at line 1" 附近 与此错误相同。

基本上,我的 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' 没有区别,尝试 "...WHERE order_id=%s", (data, Id)) 时出现相同的错误。如果我用 cursor.execute("UPDATE rma_order SET rma_num=%s WHERE order_id=87" % (data)) 替换“order_id=87”并让数据留在那里,那么它可以正常工作并将案例编号以正确的格式写入数据库,只要我添加“Id”作为 %s 的一个因素,它就会给我错误。我也尝试使用 %d 得到相同的结果。

任何帮助将不胜感激。

【问题讨论】:

    标签: python mysql python-2.7 salesforce mysql-python


    【解决方案1】:

    data 值是一个列表,您正在尝试将其格式化到查询中。而且,不要使用字符串格式将变量插入到查询中 - 请改用正确的查询参数化

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

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

    【讨论】:

    • 伙计....我花了 10 多个小时尝试不同的方法,您在点击“添加评论”所花费的所有时间内解决了它。谢谢你,alecxe
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2017-07-13
    • 1970-01-01
    相关资源
    最近更新 更多