【发布时间】:2021-04-02 18:03:15
【问题描述】:
我正在学习 Python,发现自己难以解释的行为: 使用 sqlite3 模块,我正在对现有 SQLite 表执行 SQL 查询以获取值。如果 SQL WHERE 子句中的条件为真,我期待一个真实的值,如果条件为假,我正在使用 COALESCE 处理该案例并希望返回一个默认值(在我的案例中为“-1”)。 但是,根据下面的代码示例, fetchone() 将返回一个 None 对象,直到我在所选列上应用聚合函数(在我的例子中为 MAX())。
result = cur.execute('''SELECT coalesce(pin, '-1') inaccuracies
FROM card where number = 'some_incorrect_number' ''').fetchone()
print(result)
# None -- WHY NONE?
result = cur.execute('''SELECT coalesce(max(pin), '-1')
FROM card where number = 'some_incorrect_number' ''').fetchone()
print(result)
# ('-1',) -- A CORRECT RESULT
你能解释一下为什么 MAX() 解决了这个问题并且我得到了需要的结果,而没有 MAX() 我收到了 None 吗?
抱歉,如果问题中有一些不准确之处。谢谢!
【问题讨论】:
标签: python-3.x sqlite aggregate-functions