0

尝试执行以下操作时:

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, 'You have an error in your SQL syntax... near: \' """INSERT INTO natgas (Date, UK) VALUES(\'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))

你能发现错误吗?

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

非常感谢!

4

2 回答 2

1

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

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

于 2012-05-01T12:17:07.050 回答
0

\'"""INSERT INTO natgas (Date, UK) VALUES(\'2012-05-01 13:00:34\', \'59.900\')"""\' at line 1')

这显然不是一个 vlaid SQL 命令。你需要把反斜杠去掉,你可能正在逃避不应该的东西。

例如,三重引号肯定在那里是不必要的。

于 2012-05-01T12:14:06.910 回答