我找不到解决这个问题的方法,所以我最后的选择是问这个。我在 MySQL 上运行代码,一切看起来都很好,但是当我在 Python 中运行代码时,出现错误: %d format: a number is required, not str
,这是 PyMySQL 的故障吗?两个 %s
应该是 apple
的占位符,而 %d
、%b
和 %y
只能在 SQL 命令内使用,不能充当命令外的占位符。
db.query("""SELECT *, DATE_FORMAT(DATE_ADD
('1970-01-01 00:00:00',INTERVAL pubtime SECOND),
'%d %b %Y') AS pubdate FROM media
WHERE MATCH (description) AGAINST (%s
IN BOOLEAN MODE) OR MATCH (headline) AGAINST (%s
IN BOOLEAN MODE) ORDER BY pubtime DESC LIMIT 5""",
('apple', 'apple'))
最佳答案
您可以通过在前面添加另一个“%”来转义“%”。
db.query("""SELECT *, DATE_FORMAT(DATE_ADD
('1970-01-01 00:00:00',INTERVAL pubtime SECOND),
'%%d %%b %%Y') AS pubdate FROM media
WHERE MATCH (description) AGAINST (%s
IN BOOLEAN MODE) OR MATCH (headline) AGAINST (%s
IN BOOLEAN MODE) ORDER BY pubtime DESC LIMIT 5""",
('apple', 'apple'))
关于python - PyMySQL、MySQL、Python : String formatting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766758/