pymysql query formatting, TypeError: %d format: a number is required, not str

pymysql query formatting, TypeError: %d format: a number is required, not str

所以我正在编写一个 sql 查询以使用 python pymysql 库从数据库中获取数据。用户将在 HTML 表单的文本字段中输入年份,并显示与这一年相关的数据。我正在使用这段代码,但我不断收到错误。

sql = "SELECT 'Name' From 'winners' WHERE 'Year'=%d"
c.execute(sql, (textfield,))

有人可以告诉我如何解决这个问题吗?谢谢

有两个问题:

  • 您使用的语法不正确。 ' 单引号用于定义字符串值,而不是引用 table 和列名。您可能打算使用反引号 `。参见 When to use single quotes, double quotes, and backticks?

  • 您正在传递一个字符串,其中您的查询参数表明您希望接收一个整数。 SQL 参数仅支持 %s 格式占位符,但是。

更正后的代码如下所示:

sql = "SELECT `Name` From `winners` WHERE `Year`=%s"
c.execute(sql, (int(textfield),))

注意 int() 调用;如果您的列类型是 NUMBER 或类似的,您想要 select 整数,而不是字符串。