Задать вопрос
@Vladovay

Как выводить данные из БД SQlite в боте aiogram?

Новичек в питоне пишу бота в тг и мне нужно вывести нужные строки если в БД найдется совпадения. Как это сделать? В интернете не могу найти информацию. Попробовал сделать так:

@start_router.message(Form.searсh_for_name)
async def search_name(message: types.Message):
    message_name = message.text.strip()
    async with aiosqlite.connect('base.db') as db:
        await db.execute('SELECT username, user_tg, name, soname FROM user WHERE [name] = "message_name"')
        users = db.fetchall()
        users_str = "\n".join([str(user) for user in users])
        await message.answer(users_str)
        await db.commit()


Но выводит ошибку: AttributeError: 'Connection' object has no attribute 'fetchall'. Ошибка понятна, но мне кажется я делаю что-то не то, пожалуйста подскажите.
  • Вопрос задан
  • 43 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Сначала создай курсор, потом на нём уже вызывай execute() для выполнения запросов. Когда закончишь работать с курсором - вызови close(). Это часть спецификации DB-API 2.0, которому следует большинство библиотек для работы с БД на питоне.
Ответ написан
Комментировать
Если у тебя эта же ошибка возникает и без телеграма, то упоминание телеграма можно полностью убрать из вопроса.
Проблема у тебя только с тем, что ты не читал документацию от aiosqlite и пытаешься с ним работать как с синхронным sqlite.

https://aiosqlite.omnilib.dev/en/stable/api.html#c...

У Connection действительно нет метода fetchall.
Нужно использовать метод execute_fetchall.
Либо используй курсоры, что предпочтительней.

PS: у многих новичков возникают трудности, когда они сразу пытаются делать большой проект, где сочетаются разные фреймворки/библиотеки/технологии. Пока ты не освоился с языком и не научился ориентироваться в документации - лучше попробуй с чего-то более простого.

Например, если хочешь поработать с телегой - сделай сначала хранение данных полностью в оперативной памяти на списках и словарях.

Если хочешь поработать с sqlite - попробуй в качестве интерфейса пользователя использовать консоль
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы