aiogram не видит данные с SQLite
Пытаюсь взять из таблицы "users" данные "money", но при выводе на чат, выводит пустую таблицу. Вроде бы в "money" записана "0", но его не видит. Из-за чего так происходит?
bot.py
logging.basicConfig(level=logging.INFO)
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
db = Database("database.db")
async def on_startup(_):
print('Bot is online!')
@dp.message_handler(commands = ['start'])
async def start(message : types.Message):
if message.chat.type == "private":
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id, f"Добро пожаловать!\nВаш счет: {db.user_money(message.from_user.id)} руб")
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True, on_startup=on_startup)
db.py
import sqlite3
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file)
self.cursor = self.connection.cursor()
def user_exists(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT * FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()
return bool(len(result))
def add_user(self, user_id):
with self.connection:
self.cursor.execute("INSERT INTO 'users' ('user_id') VALUES (?)", (user_id,))
def user_money(self, user_id):
with self.connection:
result = self.cursor.execute("SELECT 'money' FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchmany(1)
return result
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Логично было бы в файле bot.py написать import db. Базу назвать как-нибудь иначе base_bot = db.Database("database.db"), например. И тогда обращение к методам base_bot.user_money(message.from_user.id)


