@hey_umbrella

В чем ошибка sqlite python?

try:
            img2 = open(f'{maxmark[2][0]}', 'rb')
            mime = magic.Magic(mime=True)
            filename = mime.from_file(maxmark[2])
            if filename.find('image') != -1:
                con = sqlite3.connect("database.db")
                cursor = con.cursor()
                cursor.execute(f'SELECT username FROM PHOTOSLOTS WHERE slots = "{maxmark[2]}"')
                username = cursor.fetchone()
                con.commit()
                cursor.execute(f'SELECT namerank FROM users WHERE username = "{username[0]}"')
                namerank = cursor.fetchone()
                con.commit()
                dataCopy = cursor.execute(f'SELECT count(slots) FROM PHOTOSLOTS WHERE username = "{username[0]}"')
                values = dataCopy.fetchone()
                con.commit()
                cursor.execute(f'SELECT star FROM stars WHERE photo = "{maxmark[2]}" ') 
                mark = cursor.fetchone()
                if namerank is not None:
                    bot.send_message(message.chat.id, f'┃➣ Автор - @{username[0]} \n'
                    f'┃➣ Количество обоев - {values[0]}\n'
                    f'┃➣ Уровень - {namerank[0]}\n', reply_markup=key_com)
                else:
                    bot.send_message(message.chat.id, f'┃➣ Автор - @{username[0]} \n'
                    f'┃➣ Количество обоев - {values[0]}\n'
                    f'┃➣ Уровень - {namerank}\n', reply_markup=key_com)
                    bot.send_photo(message.chat.id, img2)
                    bot.send_message(message.chat.id, maxmark[0], reply_markup=marku)
            elif filename.find('video') != -1:
                con = sqlite3.connect("database.db")
                cursor = con.cursor()
                cursor.execute(f'SELECT username FROM PHOTOSLOTS WHERE slots = "{maxmark[2]}"')
                username = cursor.fetchone()
                con.commit()
                cursor.execute(f'SELECT namerank FROM users WHERE username = "{username[0]}"')
                namerank = cursor.fetchone()
                con.commit()
                dataCopy = cursor.execute(f'SELECT count(slots) FROM PHOTOSLOTS WHERE username = "{username[0]}"')
                values = dataCopy.fetchone()
                con.commit()
                cursor.execute(f'SELECT star FROM stars WHERE photo = "{maxmark[2]}" ') 
                mark = cursor.fetchone()
                if namerank is not None:
                    bot.send_message(message.chat.id, f'┃➣ Автор - @{username[0]} \n'
                    f'┃➣ Количество обоев - {values[0]}\n'
                    f'┃➣ Уровень - {namerank[0]}\n', reply_markup=key_com)
                else:
                    bot.send_message(message.chat.id, f'┃➣ Автор - @{username[0]} \n'
                    f'┃➣ Количество обоев - {values[0]}\n'
                    f'┃➣ Уровень - {namerank}\n', reply_markup=key_com)
                    bot.send_video(message.chat.id, img2)
                    bot.send_message(message.chat.id, maxmark[2], reply_markup=marku)
        except Exception as e:
            print(e)
            bot.send_message(message.chat.id, f'<b>『ТОП 3』 - </b>{maxmark[2][0]}', reply_markup=markup3, parse_mode='html')


Ошибка expected str, bytes or os.PathLike object, not tuple
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
img2 = open(f'{maxmark[2][0]}', 'rb')
            mime = magic.Magic(mime=True)
            filename = mime.from_file(maxmark[2])


Строка один подразумевает, что имя файл - это maxmark[2][0]. Тогда maxmark[2] - это наверно, коллекция, кортеж, список или словарь, потому что я не думаю что вы открываете файл с именем из одного символа. К слову, зачем f'{maxmark[2][0]}'?
Но в строке три судя по названию метода, нужно передать строку с путём к файлу файла - а передаётся туда maxmark[2], которое мы уже определили как возможный кортеж.
Это совпадает с текстом ошибки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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