хотите выбрать все из базы данных, где запрос представляет собой переменную (несоответствие имени пользователя), используя pandas и sqlalchemy - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь настроить таблицу лидеров через бот-диск, где при передаче команды! Myscore строка базы данных, соответствующая имени пользователя этого лица, отправляется на рассматриваемый канал, используя pandas и sqlalchemy, чтобы сделать таблица выглядит красиво, так же как и попытка сделать вывод в виде разрозненного «блока кода» (требует `` `в начале и в конце сообщения ctx.send, которое, похоже, не хочет хорошо играть с pandas и добавляет строки к выходным переменным).

# 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>

Я довольно новичок в кодировании и в основном учусь как i go, но нет повезло, что этот отсортирован

ниже приведены таблицы sql в sqlitestudio

sql setup

текущая дата А в таблице

1 Ответ

0 голосов
/ 11 апреля 2020

Какой столбец содержит информацию о балле пользователя? Код ниже для столбца score в таблице лидеров. Сначала я выбираю 1 строку из таблицы с помощью fetchrow, элемент индекса 0 - это оценка пользователя, а usercore - массив извлеченных столбцов с их содержимым.

# 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')
    ```
...