50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
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 |