@puncake

Python sql select возвращает None. Почему?

Суть такая: пишу телеграм бота на библиотеке aiogram. В боте должна быть функция премиум аккаунтов. Есть функция premium_exists проверяющая есть ли премиум аккаунт в пользователя, но вместо булевого значения она возвращает None
#sql.py
import sqlite3
class Db(object):
	def __init__(self, database):
		self.connection = sqlite3.connect(database)
		self.cursor = self.connection.cursor()

	def premium_exists(self, user_id):
		with self.connection:
			return self.cursor.execute("SELECT 'active' FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchone()

#bot.py
from config import BOT_TOKEN
from aiogram import Bot, Dispatcher, executor, types
from sql import Db

bot = Bot(BOT_TOKEN, parse_mode="HTML")
dp = Dispatcher(bot)

db = Db('db.db')

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
	print(db.premium_exists(message.from_user.id))

if  __name__ == "__main__":
	executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 332 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Во-первых, лишние кавычки в запросе. Во-вторых, у вас соединение с БД открывается один раз при запуске бота и закрывается после первого же запроса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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