【问题标题】:How do I make pyodbc output more readable/nicer?如何使 pyodbc 输出更具可读性/更好?
【发布时间】:2017-11-07 13:00:45
【问题描述】:

我目前正在制作一个不和谐机器人,其中一个命令涉及从 SQL 表中提取数据,为此我使用的是 AioOdbc 模块,它与 Pyodbc 几乎完全相同,唯一真正的区别是它不会阻塞异步函数。

以这种格式输出。

[('Item1',),('Item2',)]

我怎样才能让它输出一些更好读的东西?可能是这样的

Item1, Item2

感谢任何帮助!

【问题讨论】:

    标签: python python-3.x pyodbc discord discord.py


    【解决方案1】:

    您可以使用以下代码将其转换为字符串,其中每个项目用逗号和空格分隔:

    itemString = ', '.join((item[0] for item in items))
    

    items 是这个名称:[('Item1',),('Item2',)]

    如果您需要它能够从任意深度的嵌套列表中取出项目,例如在此列表中:[('Item1', 'Item2', ('Item3')), ('Item4', 'Item5')],您可以使用此代码:

    from collections import Iterable
    
    def flatten(nested):
        for element in nested:
            if isinstance(element, Iterable) and not isinstance(element, (str, bytes)):
                yield from flatten(element)
            else:
                yield element
    

    【讨论】:

    • 考虑引用flatten 代码的源代码。我相信原作者是 David Beazley,详情见stackoverflow.com/a/40857703/4531270
    • 我很确定我写了flatten 代码。大卫的答案是在 2016 年 11 月,但我在 2016 年夏天编写了我的 python 工具包包的第一部分(我从中复制了这个)。不过,我会支持大卫的答案,因为我认为这是该问题的最佳答案。
    • 需要明确的是,我发布的链接不是 David Beazley 的帖子,它是我的(所以不要假设它是他的)。我在此处添加了链接,因为它提供了他的 Cookbook(大约 2013 年第 3 版)的完整参考,这是我获得代码的来源。也就是说,我不知道原作者。如果是你,谢谢你的食谱。
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 2017-04-21
    • 2011-08-02
    • 2019-09-29
    • 1970-01-01
    • 2010-11-29
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多