【问题标题】:Mysql Update Syntax Error PythonMysql更新语法错误Python
【发布时间】:2012-05-16 04:54:44
【问题描述】:

我一直在关注这个先前的答案,但是我仍然收到语法错误:

Stack Overflow Answer

    cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
   """, (Year, Month, Day, Hour, Minute, ServerID))

我的代码是:

def postToMySQL(data,fieldname,table,col):
if fieldname == "Year":
    sql = "INSERT INTO " + table + " ("+ fieldname + ") VALUES (%s)"
    c.execute(sql, data)
else:
    c.execute ("""
   UPDATE %s
   SET US=%s
   WHERE ID=%s
    """, (table, data, col))

然后表格看起来像:

语法错误是:

_mysql_exceptions.ProgrammingError: (1064....near ''OilProvedReservesHistory' SET US = '36.533' WHERE ID=1' at line 1

你能发现错误吗? ?谢谢

【问题讨论】:

    标签: python sql-update mysql-python


    【解决方案1】:

    应该是这样的,没有引号

    设置我们 = '36.533'

    你可以试试这个:

    UPDATE %s
       SET US=%s
       WHERE ID=%s
    

    【讨论】:

    • 干杯。我在发布之前尝试过,但忽略了检查错误是否不同。它现在抛出:TyperError: not all agruments convert during string formatting
    • 从头开始,从列表中删除字段名仍然会给出错误:''OilProvedReservesHistory'\n\t SET US = '36.533'\n\t WHERE ID=1'。和\n\t业务有关吗?
    • 我认为 \n\t 并不重要,因为我尝试将其全部放在一行上,错误变为:''OilProvedReservesHistory' SET US='36.533' WHERE ID=1' at line 1
    • 啊,感谢 feco,但如果我明确输入表名,它就可以工作,即: else: c.execute (""" UPDATE OilProvedReservesHistory SET US=%s WHERE ID=%s "" ", (data, col)) 有人可以解释为什么会这样吗?我是否必须每次都像这样进行蛮力字符串连接? sql = "INSERT INTO " + table + " ("+ fieldname + ") VALUES (%s)"
    • OilProvedReservesHistory 后面有个 ',使用 ' 时要小心,因为它表示 SQL 中的 varchar,在进入 SQL 之前尝试连接你的字符串,并确保没有孤儿 '
    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2016-03-19
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多