python - 编程错误 1064

标签 python mysql mysql-error-1064 tornado

当我尝试使用以下 SQL 从 MySQL 数据库获取一些结果时,

entries = db.query("SELECT * FROM users ORDER BY created_at DESC LIMIT %s", count)

我收到此错误:

File "/Library/Python/2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler raise errorclass, errorvalue ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''20'' at line 1")

我真的不知道我的 SQL 脚本出了什么问题。事实上,它在我之前的 PHP 版本的服务器中运行得很好。为什么它在我的 Python 版本中不起作用?它有与 Tornado 数据库包装器相关的具体内容吗?

我尝试搜索整个互联网,但没有成功。 :(

最佳答案

您正在使用“%s”占位符,因此 count值(显然是 20)被引用(这使得您的查询以 LIMIT '20' 结尾)。尝试使用'%d'相反。

嗯,正如 Cole Maclean 所说,你不能在这里使用非“%s”占位符;至少可以说,这使得我的解决方案有点错误。

但原因仍然相同:LIMIT 参数应该是数字,而不是“数字字符串”。但引号以某种方式到达了最终查询:MySQL 错误消息显然是关于 LIMIT '20' 行。

这可能是由 MySQLdb 库中的错误引起的,或者可能是给count赋予了错误的值。变量:字符串'20' (引号作为其中的一部分)而不是数字 20。我承认,这两种情况对我来说似乎不太可能。

您可以使用硬编码文字代替 count 来测试此查询吗? ?就像...

db.query("SELECT * FROM users ORDER BY created_at DESC LIMIT %s", 20)

关于python - 编程错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095879/

相关文章:

python - 带有 MultiIndex : efficient way of checking duplicate elements in one of the indices 的 Pandas DataFrame

MySQL:最有效的类型列类型(不是 mime,而是系统或用户生成的)

mysql - 如何在 doobie 中配置 transactor?

mysql - 选择多个表的权限

php - MySQL 和 PHP 的 SQL 语法错误。 'option FROM poll_maker_options WHERE poll_id = 3'

mysql - 如何调试MySQL "You have an error in your SQL syntax error"

python - 如何将 Pandas 系列中的数字转换为整数或 float ?

python - 使用匿名lambda实现阶乘函数的python代码的解释是什么

Python,类属性错误

mysql - 如何在 MS sql 中显示类似于 11111 或类似的数字