【问题标题】:Return the column names from an empty MySQL query result从空的 MySQL 查询结果返回列名
【发布时间】:2012-10-08 09:18:31
【问题描述】:

我使用的是 Python 3.2.3,带有 MySQL/Connector 1.0.7 模块。如果 MySQL 查询返回空结果,有没有办法返回列名?

例如。假设我有这个查询:

SELECT 
`nickname` AS `team`,
`w` AS `won`,
`l` AS `lost`
WHERE `w`>'10'

然而,如果没有人超过 10 岁,显然它什么也不返回。现在,我知道我可以检查结果是否为 None,但是,我可以让 MySQL 返回列名和 NULL 值吗?

如果您很好奇,我想知道这是否可能,是因为我正在根据列名动态构建 dict。因此,如果没有人超过 10 岁,上述内容最终会看起来像这样......

[{'team':None,'won':None,'lost':None}]

看起来像这样,如果它找到 3 个超过 10 人的团队...

[{'team':'Tigers','won':14,'lost':6},
 {'team':'Cardinals','won':12,'lost':8},
 {'team':'Giants','won':15,'lost':4}]

如果这种事情是可能的,那么我就不必在整个代码中编写大量异常检查,以防空字典到处都是。

【问题讨论】:

    标签: python python-3.x mysql-connector


    【解决方案1】:

    您可以先使用 DESC table_name,您应该在第一列中获取列名

    此外,您已经知道 dict 中的键,因此您可以自己构造,然后在结果有值时将内容附加到它。

    [{'team':None,'won':None,'lost':None}]
    

    但我不明白你为什么需要这个。如果你有list of dictionaries,我猜你会有 for 循环操作。 For 循环不会对空列表执行任何操作,因此您不必担心异常检查

    如果您必须执行result[0]['team'] 之类的操作,那么您绝对应该检查len(result)>0 是否正确

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 2012-10-21
      • 2017-12-09
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多