Python 在MySQL结果中筛选空列

Python 在MySQL结果中筛选空列,python,mysql,null,Python,Mysql,Null,我构建了一个小的pythonapi,它应该返回一个JSON,里面填充了所有必要的键/值对。键值仅从MySQL数据库查询,如: SELECT * FROM flowers WHERE favourite = 1 输出: id color size favourite ... --------------------------------------------- 1234 yellow big 1 ... 1235

我构建了一个小的pythonapi,它应该返回一个JSON,里面填充了所有必要的键/值对。键值仅从MySQL数据库查询,如:

SELECT * 
FROM flowers 
WHERE favourite = 1
输出:

id        color     size     favourite  ...
---------------------------------------------
1234      yellow    big      1          ...
1235      <null>    small    1          ...
1236      blue      <null>   1          ...
1237      <null>    <null>   1          ...

我对表演也很感兴趣。是否有可能/值得通过MySQL查询达到我的目标,还是最好同时选择
结果,然后使用自定义python方法对其进行过滤?

您不能在SQL中过滤列,因为列是在
select
子句中指定的,并且所有行都具有相同的列。您必须在PHP中完成这项工作,在将列添加到结果数组时循环遍历这些列

$result = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $result_row = array();
    foreach ($row as $col => $value) {
        if ($value !== null) {
            $result_row[$col] = $value;
        }
    }
    $result[] = $result_row;
}
echo json_encode($result);

谢谢你回答了我的问题。在我的例子中,我使用python,但原理是一样的。也许您应该将其转换为Python并发布代码,这样您就可以接受正确的答案。
[
    {'id': 1234, 'color': "yellow", 'size': "big", 'favourite': 1, ... },
    {'id': 1234, 'size': "small", 'favourite': 1, ... },
    {'id': 1234, 'color': "blue", 'favourite': 1, ... },
    {'id': 1234, 'favourite': 1, ... }
]
$result = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $result_row = array();
    foreach ($row as $col => $value) {
        if ($value !== null) {
            $result_row[$col] = $value;
        }
    }
    $result[] = $result_row;
}
echo json_encode($result);