@helldess

Ошибка sqlite3.InterfaceError: Error binding parameter 0 — probably unsupported type. Как исправить?

Пишу телеграм бота на библиотеке aiogram, использую модуль sqlite3.
При нажатии на инлайн кнопку должна выводиться вся инфа о товаре. Но выдает ошибку.

Код базы данных:

def get_item_tg():
    with conn:
        result = cursor.execute("SELECT name, price, colvo FROM tovars").fetchall()
        return result


def get_item_id():
    with conn:
        result = cursor.execute("SELECT tovarid FROM tovars").fetchall()
        return result


def get_item_tg1(tovarid):
    with conn:
        result = cursor.execute("SELECT name, category, description, price, colvo FROM tovars WHERE tovarid = ?", (tovarid,)).fetchone()
        return result


Код хендлера, который принимает нужный мне калбэк:

@dp.callback_query_handler(text='tg')
async def tg_item_tovar(message: types.Message):
    tovarid = get_item_id()
    tovar = get_item_tg1(tovarid)
    await bot.delete_message(message.from_user.id, message.message.message_id)
    await bot.send_message(message.from_user.id, text=f'<b>Покупка товара:</b>\n➖➖➖➖➖➖➖➖➖➖➖➖➖\n<b> Название: </b>{tovar[0]}\n<b> Категория: </b> {tovar[1]}\n<b> Описание: </b>{tovar[2]}\n<b> Стоимость: </b>{tovar[3]}₽\n<b> Количество: </b>{tovar[4]} шт', parse_mode='html')


База данных в sqlitestudio:
633bf574af327506687114.png
  • Вопрос задан
  • 1362 просмотра
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Ну хотя бы немного думать своей головой надо, а не просто копировать какие-то строчечки из интернета.
Метод fetchall() возвращает данные какого типа?
а в execute() надо передавать данные какого типа?

Вот реально - неделю назад вы писали код, который был мало того что почти рабочим - он был осмысленным.
Я понимаю, если бы вы не умели работать с базой данных. Но у вас уже был рабочий код!
А здесь опять какие-то самолеты из соломы. Попытка получить скалярную переменную с числом из запроса, который возвращает ВСЕ колонки ВСЕХ строк таблицы.

Для начала вам надо забыть про питон и телеграм, а сесть за консоль SQL
и научиться писать все запросы, которые понадобятся
Ответ написан
@denislysenko
data engineer
пример:
result = cursor.execute("SELECT 10, 'hello'").fetchall() # переменная result равна [(10, 'hello')]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы