Как занести значения в базу данных sqlite3 через aiogram3
Помогите решить проблему пожалуйста, как мне занести данные в базу данных через aiogram3
выводит эту ошибку - cur.execute("SELECT name FROM accounts") sqlite3.OperationalError: no such table: accounts
там вроде в файле main надо как то подключать, я по роликам смотрел на ютубе, но там был aiogram 2 и тот способ мне не подошел. Там в ролике импортировали из aiogram.utils executor, и еще там в start_polling указывали ключ (вроде ключ,я не знаю точно как называется:( ) on_startup= <функция с db>. Помогите пожалуйста как в aiogram 3 реализовать эту операцию
main
from aiogram import Bot,Dispatcher
from handlers import database as db
token ="токен"
from handlers import bot_messages,user_commands,account
async def on_startup():
await db.db_start()
print("Бот запущен")
async def main():
dp = Dispatcher()
bot = Bot(token=token, parse_mode='html')
dp.include_routers(
user_commands.router,
account.router,
bot_messages.router
)
try:
await dp.start_polling(bot)
finally:
await bot.session.close()
await bot.delete_webhook(drop_pending_updates=True)
if __name__=="__main__":
asyncio.run(main())
database
import sqlite3 as sq
db=sq.connect("br_main")
cur=db.cursor()
async def db_start():
cur.execute("""CREATE TABLE IF NOT EXIST accounts("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name TEXT."
"description TEXT,"
"reg INT )""")
db.commit()
account
from aiogram import Router,F,Bot
from aiogram.types import Message
from aiogram.filters import Command
from aiogram.fsm.context import FSMContext
from BeatsRate.utils.states import Form
from BeatsRate.keyboards_main.reply import main
import sqlite3 as sq
from BeatsRate.keyboards_main.builder import profile
from BeatsRate.keyboards_main.reply import rmk
router=Router()
@router.message(Command(commands=["profile","pr"]))
async def fill_profile(message:Message,state:FSMContext):
await state.set_state(Form.nickname)#set_state-создание нового стейта
await message.answer(
"Введите свой никнейм или можете оставить свой текущий username в телеграме, нажав на кнопку",
reply_markup=profile(message.from_user.username)
)
#Обновляет значение
@router.message(Form.nickname)
async def form_name(message:Message,state:FSMContext):
await state.update_data(nickname=message.text)
db = sq.connect("br_main")
cur = db.cursor()
cur.execute("SELECT name FROM accounts")
cur.execute(f"INSERT INTO accounts VALUES('{message.text}')")
db.commit()
await state.set_state(Form.description)
await message.answer("Описание",reply_markup=rmk)