python - SQLite Python AND 语句不起作用

标签 python database sqlite execute

我试图从 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/

相关文章:

python - main.py 抛出 "ImportError: No module named app"

python - Discord.py 如何删除每个文本 channel ?

python - Django 管理员问题

sql-server - 确定哪个用户删除了 SQL Server 数据库?

mysql - 数据库模式 - 按对象或数据组织?

android - 在 Android 中使用 'FileWriter' 写入 SD 卡上的文本文件

java - Android中使用SQLite获取RowID

python-split() 在 __init__ 中不起作用

iphone sqlite 页面缓存增长

javascript - Chrome 的 HTML5 Web 数据库在某些 Windows 配置上非常慢