Вывод данных из таблицы sqlite в телеграм бот aiogram
Нужно вывести столбец первой строки из таблицы. Как это реализовать?
Таблица:
Мой код:
import sqlite3
import random
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def get_koll(self):
with self.connection:
result = self.cursor.execute("SELECT kol FROM ferma WHERE id = 1").fetchall()
return result
import config
import logging
import random
from aiogram import Bot, Dispatcher, executor, types
from db import Database
import time
import datetime
#log level
logging.basicConfig(level=logging.INFO)
#Инициализация бота
bot = Bot(token=config.TOKEN)
dp = Dispatcher(bot)
db = Database('database.db')
@dp.message_handler()
async def filter_messages(message: types.Message):
if message.text.lower() == "топф":
await message.reply(str(db.get_koll))
При попытке запуска выдается ошибка в сообщении бота:
<bound method Database.get_koll of <db.Database object at 0x00000223E7E1D360>>
Ответы (2 шт):
Автор решения: Novator
→ Ссылка
мне кажется в функции get_koll нужно использовать fetchone()[0]
В общем сама функция должна выглядеть так:
def get_koll(self):
with self.connection:
result = self.cursor.execute("SELECT kol FROM ferma WHERE id = 1")
return result.fetchone()[0]
Автор решения: Ovsenka
→ Ссылка
Вы не вызываете ваш метод. Используйте это в последней строке:
await message.reply(str(db.get_koll()))
