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 整数,而不是字符串。
所以我正在编写一个 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 整数,而不是字符串。