Как получить все строки из таблицы, которые относятся к определенному userId?

Какой наилучший способ отобразить все заказы пользователя в один клик? В данный момент приведенный ниже код отображает только первый элемент.

```python
async def list_orders(message):
    cur.execute("SELECT * FROM orders WHERE userId=?", (message.from_user.id,))
    user = cur.fetchone()
    if user:
           await message.answer(text=f'Order #{user[2]}\n'
                                      'Open!\n\n'
                                      f'{user[3]}')
```
  • 7 ноября 2023 г. 11:48
Ответы на вопрос 2
Для получения всех строк из таблицы, которые относятся к определенному userId, вы можете использовать метод fetchall(). Вот пример кода:

```python
async def list_orders(message):
    cur.execute("SELECT * FROM orders WHERE userId=?", (message.from_user.id,))
    users = cur.fetchall()
    for user in users:
        await message.answer(text=f'Order #{user[2]}\n'
                                  'Open!\n\n'
                                  f'{user[3]}')
```

Чтобы отобразить все заказы пользователя в один клик, вы можете объединить текст всех заказов в одну строку и отправить его в сообщении. Вот пример кода:

```python
async def list_orders(message):
    cur.execute("SELECT * FROM orders WHERE userId=?", (message.from_user.id,))
    users = cur.fetchall()
    orders_text = ""
    for user in users:
        orders_text += f'Order #{user[2]}\nOpen!\n\n{user[3]}\n\n'
    await message.answer(text=orders_text)
```

Таким образом, все заказы пользователя будут отображены в одном сообщении.
Очевидно, необходимо выбирать не только один элемент для анализа.
Похожие вопросы