【问题标题】:How can I make the multi-line list from SQLite table in Discord on Python?如何在 Python 上的 Discord 中从 SQLite 表中创建多行列表?
【发布时间】:2021-01-19 12:42:17
【问题描述】:

我正在尝试让机器人将 SQLite 表中的值作为列表发送。这是一个名为Employees的表:

emp_id ||员工名 || emp_position

emp_1 ||简 || emp_pos1

emp_2 ||杰克 || emp_pos2

这是我的命令显示emp列表的功能:

@bot.command()
async def EmpTest(ctx):

    with conn:
        cursor.execute("SELECT emp_name, emp_position, emp_id FROM Employees")
        emp_list = cursor.fetchall()

    for j in range(0):
        column = []
        for i in range(0):
            column += emp_list
        column += "\n"
        emp_list += column
    for column in emp_list:
       for item in column:
           print(item, end=" ")
       print()
    await ctx.send(emp_list)

在控制台打印时效果很好:

Jane emp_pos1 emp_1
Jake emp_pos2 emp_2

但这就是 Discord 在ctx.send(emp_list): 之后给出的输出 [('Jane', 'emp_pos1', emp_1), ('Jake', 'emp_pos2', emp_2)] 如何让它像在控制台中一样在 Discord 中发送?

【问题讨论】:

    标签: python sqlite discord discord.py


    【解决方案1】:

    当您从 SQLite 获取数据时,您会得到 tuple 类型的数据。在这种情况下,您会得到一个元组列表。

    所以首先,您需要获取列表中的每一项。您可以使用for loop 来做到这一点。

    for emp_info in emp_list:
        print(emp_info)
    

    简单地说,您打印了 2 个员工的信息。

    然后,您应该删除括号。有几种方法可以做到这一点。我将向您展示其中一种方法。

    您可以使用string.join() 函数。你可以这样做:

    for emp_info in emp_list:
        print(', '.join(emp_info))
    

    然后您可以像这样将其编辑为您的代码:

    for emp_info in emp_list:
        await ctx.send(', '.join(emp_info))
    

    【讨论】:

    • 感谢您的回答。但是当我运行它时 - 它向我显示一个错误,所以我将 [[ for emp_info in emp_list: await ctx.send(', '.join(emp_info)) ]] 更改为: [[ for emp_info in emp_list: await ctx. send(', '.join(map(str, emp_info))) ]] 效果很好。
    猜你喜欢
    • 2018-12-31
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多