想要使用 pandas 和 sqlalchemy 从查询是变量(不和谐用户名)的数据库中选择所有内容

Posted

技术标签:

【中文标题】想要使用 pandas 和 sqlalchemy 从查询是变量(不和谐用户名)的数据库中选择所有内容【英文标题】:want to select all from a database where the query is a variable(discord username) using pandas and sqlalchemy 【发布时间】:2020-07-24 06:56:43 【问题描述】:

我正在尝试通过不和谐机器人设置排行榜,当通过命令 !myscore 时,与该人的用户名对应的数据库行被发送到上下文通道,使用 pandas 和 sqlalchemy 使表格看起来不错,以及尝试使输出成为不和谐的“代码块”(在 ctx.send 消息的开头和结尾处需要 ```,这似乎不想与熊猫玩得很好并将字符串添加到变量输出)。

# send score for specific user
@bot.command(name='myscore', help='show score of specific')
async def scorecheck(ctx):
    user = str(ctx.message.author)
    print("recieved from " + user)
    userscore = cur.execute(
        'SELECT * FROM Leaderboard WHERE Username=?', (user, ))

    #query = "SELECT * from Leaderboards WHERE Username =?"
    #userscore = pd.read_sql_query(query, db, params=user)
    # (sa.text("SELECT * FROM Leaderboard WHERE Username=:user"), engine, params="user": user)
    #userscore = pd.read_sql_query(query, db)
    print(ctx.message.author)
    await ctx.send(userscore)

    print('Score view successful')

注释的代码是我试图让它工作的其他一些东西。

打印消息主要用于查看代码是否正在执行,因为它没有输出任何内容。

与所有未注释代码不一致的当前输出是: <sqlite3.Cursor object at 0x0F08F6A0>

我对编码还是很陌生,基本上是边走边学,但是没有运气来整理这个

下面是sqlitestudio中的sql表

sql setup

current data in table

【问题讨论】:

【参考方案1】:

哪一列包含有关用户分数的信息?下面的代码用于排行榜表中的列score。首先,我通过fetchrow 从表中获取 1 行,0 索引元素是用户的分数,userscore 是获取的列及其内容的数组。

# send score for specific user
@bot.command(name='myscore', help='show score of specific')
async def scorecheck(ctx):
    user = str(ctx.message.author)
    print("recieved from " + user)
    userscore = cur.fetchrow(
        'SELECT score FROM Leaderboard WHERE Username=?', (user, ))

    if not userscore:
        await ctx.send("User name not in database :(".format(name=user))
        return


    await ctx.send("name's score is score".format(
        name=user,
        score=userscore[0]
    ))

    print('Score view successful')
    ```

【讨论】:

使用此代码打印从 printline 收到的内容,但在不和谐频道中不输出任何内容 显示排行榜的表格结构 不是 100% 确定你的意思,但已经放了一些图片 userscore = cur.fetchrow('SELECT TotalPoints FROM Leaderboard WHERE Username=?', (user, ))

以上是关于想要使用 pandas 和 sqlalchemy 从查询是变量(不和谐用户名)的数据库中选择所有内容的主要内容,如果未能解决你的问题,请参考以下文章

截断表不适用于 SQL Server sqlalchemy 引擎和 pandas

Pandas 和 SQLAlchemy:使用来自 engine.begin() 的连接时,带有 SQLAlchemy 2.0 fututre=True 的 df.to_sql() 会引发错误

如何在 SQLAlchemy 的`create_engine` 中使用`charset` 和`encoding`(创建pandas 数据框)?

如何使用 pandas sqlalchemy 和 psycopg2 处理 NaT

无法在 ETL 过程中使用 Pandas 和 SQLAlchemy 将列名从 CSV 更改为 SQL Server DB

使用 sqlalchemy 从 PostgreSQL 查询返回 Pandas 数据框