Mysql Update Syntax Error Python
我一直在关注这个先前的答案,但是我仍然收到语法错误:
堆栈溢出答案
1
2 3 4 5 |
cursor.execute (“””
UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server=%s “””, (Year, Month, Day, Hour, Minute, ServerID)) |
我的代码是:
1
2 3 4 5 6 7 8 9 10 |
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
你能发现错误吗? ?谢谢
应该是这样的,没有引号
SET US = ‘36.533’
你能试试这个吗:
1
2 3 |
UPDATE %s
SET US=%s WHERE ID=%s |
- 干杯。我在发布之前尝试过,但忽略了检查错误是否不同。现在抛出:TyperError: not all agruments convert during string formatting
-
从头开始,从列表中删除字段名仍然会给出错误:\\’\\’OilProvedReservesHistory\\’\\\\
\\\\\\\\t 设置我们 = \\’36.533\\’\\\\
\\\\\\\\t 其中 ID=1\\’。是不是和 \\\\ 有关系
\\\\\\\\t 生意? -
我不认为 \\\\
\\\\\\\\t 很重要,因为我尝试将其全部放在一行上,错误变为: \\’\\’OilProvedReservesHistory\\’ SET US=\\’36.533\\’ WHERE ID=1\\’ at line 1 - 啊,感谢 feco,但如果我明确输入表名,它就可以工作,即: else: \\\\t\\\\tc.execute (” \\\\t UPDATE OilProvedReservesHistory \\\\t SET US=%s \\\\t WHERE ID =%s \\\\t\\\\t”, (data, col)) 有人能解释一下为什么会这样吗?我是否必须每次都像这样进行蛮力字符串连接? sql = “INSERT INTO ” table ” (” fieldname “) VALUES (%s)”
- \\’OilProvedReservesHistory 后面有一个 \\’,使用 \\’ 时要小心,因为它在 SQL 中表示 varchar,在进入 SQL 之前尝试连接你的字符串,并确保没有孤立的 \\’
来源:https://www.codenong.com/10486211/