Простой способ составить Postgresql запрос к списку - PullRequest
0 голосов
/ 09 января 2020
    ```
    dbcard = await self.bot.pg_con.fetchrow("SELECT array (SELECT card_name FROM cardimages)")
    dbcard = str(dbcard) 
    dbcard = dbcard[15:-2]
    dbcard = dbcard.replace("\'","")
    dbcard = dbcard.split(",")
    await ctx.send(dbcard)```

Я относительно новичок в python / database, поэтому извините, если это действительно простой вопрос! Я пытаюсь преобразовать информацию из столбца таблицы в список python. В исходной dbcard я получаю значение, подобное следующему: чтобы избавиться от него, я изменяю его на строку (очевидно, это еще не строка?), Удаляю стороны, стираю кавычки и затем разделяю его в список. Я уверен, что есть еще один гораздо более эффективный способ решения этой проблемы!

Спасибо! Ниже приведена база данных.

1 Ответ

1 голос
/ 09 января 2020

Предполагая, что это asyncpg, fetchrow должно дать запись . Если у вас есть одно значение, вы все равно получаете запись с одним значением.

Так что просто получите соответствующее значение из записи ...

Ваш запрос не имеет большого смысла, хотя , вы заставляете postgres преобразовать ваш запрос в массив, а затем пытаетесь связываться с этим массивом, получая postgres.

Вы должны просто использовать обычный выбор, затем использовать fetch который выдает список записей и извлекает соответствующие данные из списка записей в список элементов, что-то вроде

names = [
    record.card_name
    for record in await self.bot.pg_con.fetch("select card_name from cardimages")
]

(код не проверен, поэтому у меня может быть асинхронность c биты неверны)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...