mikkhalev
@mikkhalev

Почему данные из базы выводятся с лишними символами?

Добрый вечер. Пишу бота. Суть проста, пользователь жмет на нужную кнопку, а затем бот редактирует сообщение на текст, который код формирует вытаскивая текст из нескольких ячеек базы данных SQLite. Использую библиотеку PyTelegramBotApi. Но данные выводятся в скобках, кавычках и запятой в конце. Как это исправить? Заранее спасибо всем за помощь.

Выходные данные:
('Пример названия',)
----------------------------------
('Тут много текста ...',)

Цена: ('2500000',)

Функции обращений к бд:
def product_name(id ):
    with sqlite3.connect('database.db') as connection:
        cursor = connection.cursor()
        cursor.execute("SELECT `name` FROM `catalog` WHERE `id` = ? ", (id,))
        result = cursor.fetchone()
        return result

def product_about(id ):
    with sqlite3.connect('database.db') as connection:
        cursor = connection.cursor()
        cursor.execute("SELECT `about` FROM `catalog` WHERE `id` = ? ", (id,))
        result = cursor.fetchone()
        return result
 
def product_price(id ):
    with sqlite3.connect('database.db') as connection:
        cursor = connection.cursor()
        cursor.execute("SELECT `price` FROM `catalog` WHERE `id` = ? ", (id,))
        result = cursor.fetchone()
        return result

Код вывода по кнопке:
if call.data == 'bud-1':

        markup = types.InlineKeyboardMarkup(row_width=1)
        item1 = types.InlineKeyboardButton("Назад", callback_data='bud')
        markup.add(item1)

        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=str(product_name('bud1')) + "\n" + "----------------------------------\n" + str(product_about('bud1')) + "\n" + "\n"+"Цена: " + str(product_price('bud1')), parse_mode='html', reply_markup=markup)
  • Вопрос задан
  • 350 просмотров
Решения вопроса 1
@raitonoberu
Вы преобразуете кортеж в строку:
>>> a = ("foo",)  # кортеж из одного значения
>>> str(a)  # преобразовать в строку
"('foo',)"
>>> a[0]  # получить значение
'foo'

Чтобы исправить, замените str(product_name('bud1')) на product_name('bud1')[0]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
LazyTalent
@LazyTalent
Data Engineer, Freelancer
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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