如何调试“您的SQL语法有错误”

时间:2018-12-22 17:42:14

标签: python mysql

关于You have an error in your SQL syntax的几个问题-但它们似乎都解决了查询中的特定语法错误,通常对其他人没有帮助。

我的问题是如何从Python中的MySQL命令获取格式化查询,以便实际上可以对其进行检查?

所以我有一个类似的声明:

cursor.execute("INSERT INTO products(acc, title, sku, price, price_checked, desc, imgs) VALUES (%s,%s,%s,%s,%s,%s,%s)", (1, prod.title, prod.sku, prod.price, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), prod.desc, prod.imgs))

错误是:

  

_mysql_exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取使用n的正确语法。   耳朵“ desc,imgs”值(第1行的“'Holy Stone HS700 FPV无人机,带有1080p高清摄像机实时视频'”)

您知道如何获取执行的查询吗?我不想自己格式化查询,然后在执行之前将其打印出来,而主要出于安全原因而使用MySQL的内置格式化。

1 个答案:

答案 0 :(得分:0)

DESC是SQL中的关键字,用于按降序排序。您无法调用参数"desc"之一,因为它会被这样解释。考虑一下您是否将列之一称为“选择”;这是同样的问题。您需要重命名该字段。

最初,我专注于prod.desc,但是在您的查询字符串中,您列出了'desc'作为实际列名:"... products(acc, title, sku, price, price_checked, desc, imgs)"

您可以使用建议here查看运行的最后一个查询,但由于没有任何MySQL实例,因此无法进行测试。