porridger/back/service.py

50 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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