pymysql查询格式,TypeError:%d格式:需要一个数字,而不是str

时间:2015-12-06 02:47:26

标签: python pymysql

所以我正在编写一个sql查询来使用python pymysql库从数据库中获取数据。用户将以HTML格式输入一年作为文本字段,并显示与今年相关的数据。我使用此代码并且我不断收到错误。

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

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

1 个答案:

答案 0 :(得分:1)

有两个问题:

  • 您使用的语法不正确。 '单引号用于定义字符串值,而不是引用表名和列名。您可能打算使用反引号`。请参阅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或类似,则要选择整数而不是字符串。