从Python插入MySQL查询的语法无效

从Python插入MySQL查询的语法无效,python,mysql-python,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 + ",

尝试执行以下操作时:

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语法有错误…靠近: \'''在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))
你能发现错误吗

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

非常感谢

\“插入natgas(英国日期)值(\'2012-05-01 13:00:34\”, \“59.900\”)“第1行的“\”)

这显然不是vlaidsql命令。你需要把反斜杠弄出来,你可能在逃避不该逃避的东西


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

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


另一方面,一定要相信这种方法的输入。查找
SQL注入

谢谢您的回答。我试图将其复制为字符串>“插入natgas(Date,UK)值(%s,%s)”<,然后将其传递给cursor.execute。为此,我必须转义三个“”,否则python会认为我正在关闭字符串。三个引号不应该是查询的一部分,它们是python语法。此外,您似乎还转义了值中的单引号。请尝试删除所有反斜杠…不幸的是,当我删除斜杠时,我只得到一个块引号:“”“插入到“+table+”(“+date\u column\u name+”,“+data\u column\u name+”)值(%s,%s)”+”,python无法识别字符串中是否存在变量。感谢Weasel,使其正常工作。三重引号真的没必要。啊,太棒了!下面的代码现在可以使用了:sql=“INSERT INTO”+table+(“+date\u column\u name+”,“+data\u column\u name+”)值(%s,%s)”我听说过一些关于sql注入的内容。我还没有什么有价值的东西,但是有没有一个简单的替代方法呢?