@dmitrysurkov

Error binding parameter 0 — probably unsupported type почему?

Ошибка:
File "/Users/dmitrij/Desktop/bot/bot.py", line 87, in bot_message
    if db.create_chat(message.chat.id, chat_two) == False:
  File "/Users/dmitrij/Desktop/bot/database.py", line 65, in create_chat
    self.cursor.execute("DELETE FROM 'queue' WHERE 'chat_id' = ?", (chat_two,))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.


Код из файла database
def get_chat(self):
        with self.connection:
            chat = self.cursor.execute("SELECT * FROM queue", ()).fetchmany(1)
            if bool(len(chat)):
                for row in chat:
                    user_info = [row[1], row[2]]
                    return user_info
            else:
                return [0]
            
    def create_chat(self, chat_one, chat_two):
        with self.connection:
            if chat_two != 0:
                #Создание чата
                self.cursor.execute("DELETE FROM 'queue' WHERE 'chat_id' = ?", (chat_two,))
                self.cursor.execute("INSERT INTO 'chats' ('chat_one', 'chat_two') VALUES (?,?)", (chat_one, chat_two,))
                return True
            else:
                #Становимся в очередь
                return False


Код из файла bot

#------------------ Поиск --------------#
        elif message.text == 'Поиск':
            markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
            item1 = types.KeyboardButton('Остановить поиск')
            markup.add(item1)

            chat_two = db.get_chat() # берем собеседника который стоит в очереди первым
            
            if db.create_chat(message.chat.id, chat_two) == False:
                db.add_queue(message.chat.id)
                bot.send_message(message.chat.id, 'поиск собеседника', reply_markup = markup)
            else:
                mess = 'Собеседник найден!'
                markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
                item1 = types.KeyboardButton('Остановить чат')
                markup.add(item1)
                
                bot.send_message(message.chat.id, mess, reply_markup = markup)
                bot.send_message(chat_two, mess, reply_markup = markup)
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
if db.create_chat(message.chat.id, chat_two) == False:

т.е. проблема в значении chat_two
chat_two = db.get_chat()
Смотрим что возвращает get_chat()
user_info = [row[1], row[2]]
return user_info

или
return [0]

Т.е. get_chat() возвращает список, ты этот список пытаешься скормить напрямую в self.cursor.execute(), который такие извращения не поддерживает.

Что делать не посоветую, так как прямо говоря, код паршивый. Отложи бота и почитай хорошую книжку, типа Лутца "Изучаем Питон", а также приучайся пользоваться type hints - такие косяки должна среда разработки отлавливать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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