关于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的内置格式化。
答案 0 :(得分:0)
DESC
是SQL中的关键字,用于按降序排序。您无法调用参数"desc"
之一,因为它会被这样解释。考虑一下您是否将列之一称为“选择”;这是同样的问题。您需要重命名该字段。
最初,我专注于prod.desc
,但是在您的查询字符串中,您列出了'desc'
作为实际列名:"... products(acc, title, sku, price, price_checked, desc, imgs)"
您可以使用建议here查看运行的最后一个查询,但由于没有任何MySQL实例,因此无法进行测试。