来自Python的INSERT INTO MySQL查询的语法无效

时间:2012-05-01 12:10:07

标签: python mysql-python

尝试执行以下操作时:

def postToMySQL(date,data,date_column_name,data_column_name,table):

cursor = conn.cursor ()


sql = "\"\"\"INSERT INTO " + table + " (" + date_column_name + ", " + data_column_name + ") VALUES(%s, %s)" + "\"\"\"" #+ ", " + "(" + date + ", " + data + ")"  
cursor.execute(sql,(date,data))

我收到此错误:

  

_mysql_exceptions.ProgrammingError:(1064,'您的SQL语法中有错误...附近:    \'“”“INSERT INTO natgas(日期,英国)价值观(\'2012-05-01 13:00:34 \',\ '59 .900 \')”“” \ '在第1行')

我对语法错误的地方感到困惑,因为下面的硬编码示例运行正常:

def postUKnatgastoMySQL(date, UKnatgas):

cursor = conn.cursor ()

cursor.execute("""INSERT INTO natgas (Date, UK)VALUES(%s, %s)""", (date, UKnatgas))

你能发现错误吗?

或者,你能告诉我如何将参数传递给字段列表以及值列表吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

这些三引号是一种在python中表示字符串的方法。它们不应该是实际查询的一部分。

另一方面,请确保您相信这种方法的输入。查看SQL Injection

答案 1 :(得分:0)

  

\'“”“INSERT INTO natgas(日期,英国)价值观(\'2012-05-01 13:00:34 \',   \ '59 .900 \')“”\“在第1行'')

这显然不是一个vlaid SQL命令。你需要从那里获得反斜杠,你可能正在逃避你不应该的东西。

三重引号例如肯定是不必要的。