我试图从 SQLite 数据库中提取一周中特定日期和当天特定时间的行列表。 当我打开我的 sqlite 浏览器并输入 SQL 时:
SELECT * FROM points
WHERE strftime('%H', checkintime) == '12'
AND strftime('%w', checkintime) == '1'
它有效,我收到了我应该收到的所有行。 但是,当我尝试在 python 中执行此操作时:
_points.execute("""SELECT * FROM points WHERE strftime('%H', checkintime) == ? AND strftime('%w', checkintime) == ?""", (time, day))
当时间为 12 且日期为 1 时,我返回的结果为零。
更奇怪的是,当我将 execute
语句更改为使用硬编码值时,它起作用了。
我已经尝试将我的 vars 类型转换为字符串和整数,但仍然不行。 :(
有什么建议吗?
最佳答案
我认为您必须将数字参数转换为字符串,否则它们不会像您在 sqlite 语句中那样被引用。变量替换为 ?不引用数字。
你实际上是在比较字符串,所以你必须将参数转换为字符串。
关于python - SQLite Python AND 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5152172/