gpt4 book ai didi

python - 在 MySQL 结果中过滤 NULL 列

转载 作者:行者123 更新时间:2023-11-29 11:04:45 26 4
gpt4 key购买 nike

我构建了一个小型 python API,它应该返回一个包含所有必要的键/值对的 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 ...

执行此查询将返回一个类似于以下内容的数组:

[
{'id': 1234, 'color': "yellow", 'size': "big", 'favourite': 1, ... },
{'id': 1234, 'color': "<null>", 'size': "small", 'favourite': 1, ... },
{'id': 1234, 'color': "blue", 'size': "<null>", 'favourite': 1, ... },
{'id': 1234, 'color': "<null>", 'size': "<null>", 'favourite': 1, ... }
]

为了防止向客户发送任何无用的条目,我想选择我正在选择的内容。我的目标是继续选择 favourite=1 所在的每一行,但只需离开该列,返回 <null> 。所以我得到的结果等于:

[
{'id': 1234, 'color': "yellow", 'size': "big", 'favourite': 1, ... },
{'id': 1234, 'size': "small", 'favourite': 1, ... },
{'id': 1234, 'color': "blue", 'favourite': 1, ... },
{'id': 1234, 'favourite': 1, ... }
]

我对表演也很感兴趣。是否有可能/值得通过 MySQL 查询达到我的目标,还是选择 <null> 更好?结果并随后使用自定义 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 - 在 MySQL 结果中过滤 NULL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com