Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用“时获取空行”;案例;(在使用聚合时,实际上是这样)_Python_Sqlite - Fatal编程技术网

Python 使用“时获取空行”;案例;(在使用聚合时,实际上是这样)

Python 使用“时获取空行”;案例;(在使用聚合时,实际上是这样),python,sqlite,Python,Sqlite,我正在用python脚本查询sqlite数据库表 SELECT servername, date('now','localtime'), sum(CASE WHEN locked="NO" THEN 1 END), sum(CASE WHEN locked="YES" THEN 1 END) FROM nodes WHERE servername="SOME_SERVER" 它工作正常(给我服务器名、今天的日期、解锁节点的数量和锁定节点的数量) 。。。除非查询

我正在用python脚本查询sqlite数据库表

SELECT servername, 
     date('now','localtime'),
     sum(CASE WHEN locked="NO" THEN 1 END),
     sum(CASE WHEN locked="YES" THEN 1 END) 
FROM nodes
WHERE servername="SOME_SERVER"
它工作正常(给我服务器名、今天的日期、解锁节点的数量和锁定节点的数量)

。。。除非查询没有匹配项(即,没有提供名称的servername)。在这种情况下,查询结果是

空,“2013-04-15”,空,空

(为了清晰起见,我添加了空值)

某些服务器没有节点是有效的。如果我从查询中删除“cases”,我不会得到任何查询结果,因此它们会导致我在不需要时得到一个结果

如何使它在SQL查询中不返回任何内容,而不用在python中检测它,或者事先查询计数?

Hmm添加一个

group by servername

如果没有匹配,空白线就会消失,就像我偶然发现的一样。我很难解释这一点,但我认为sqlite文档中包含了这一点:

如果SELECT语句是没有GROUP BY的聚合查询 子句,然后计算结果集中的每个聚合表达式 一旦跨越整个数据集。中的每个非聚合表达式 结果集对任意选择的数据行计算一次 数据集。每一行使用相同的任意选择行 非聚合表达式。或者,如果数据集包含零行,则 每个非聚合表达式都针对一行进行求值,该行包括 完全由空值组成

通过计算聚合创建的结果集数据的单行 结果集中的非聚合表达式构成 不带GROUPBY子句的聚合查询一个不带 GROUPBY子句始终只返回一行数据,即使 输入数据为零行。