from sqlalchemy.orm import Session from .models import Poems import random # Загружаем стихи def add_poems_to_db(db: Session): f1 = open('text121.txt', encoding='utf-8', mode='r')#открыть фаил для чтения на русском for a in range(1, 102): f1.seek(0)#перейти к началу i=0 str1="" stixi = "" while str1 != f"стих {a}\n": str1=f1.readline() name=f1.readline() # Цикл для склеивания стихотворения while str1 != f"стих {a+1}\n": str1=f1.readline() if(str1 != f"стих {a+1}\n"): stixi+=str1#удаление /n и заключение в список poem = Poems(poem_name=name, poem_text=stixi) # В конце каждой итерации добавляем в базу данных db.add(poem) db.commit() db.refresh(poem) # close the file f1.close() def generate_poem(db: Session): # генерируем 1 случайное id и выбираем объект бд с этим id rand_id = random.randint(1, 102) poem = db.query(Poems).filter(Poems.id == rand_id).first() # возвращаем название и текст стихотворения return {"name": poem.poem_name, "text": poem.poem_text, "author":""} # добавить поле author в Poems # Функция, создающая сессию БД при каждом запросе к нашему API. # Срабатывает до запуска остальных функций. # Всегда закрывает сессию при окончании работы с ней # @app.middleware("http") # async def db_session_middleware(request: Request, call_next): # response = Response("Internal server error", status_code=500) # try: # request.state.db = SessionLocal() # response = await call_next(request) # finally: # request.state.db.close() # return response