from fastapi import FastAPI
from sqlmodel import SQLModel, Field, Session, create_engine, select
from typing import List
class Person(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str
city: str
sqlite_url = "sqlite:///database.db"
engine = create_engine(sqlite_url)
def init_db():
SQLModel.metadata.create_all(engine)
with Session(engine) as session:
if not session.exec(select(Person)).first():
data = [
Person(name="Алексей", city="Белград"),
Person(name="Мария", city="Нови-Сад"),
Person(name="Иван", city="Ниш"),
Person(name="Елена", city="Суботица"),
Person(name="Дмитрий", city="Крагуевац"),
Person(name="Анна", city="Чачак"),
Person(name="Сергей", city="Панчево"),
Person(name="Ольга", city="Лесковац"),
Person(name="Николай", city="Крушевац"),
Person(name="Татьяна", city="Валево")
]
session.add_all(data)
session.commit()
init_db()
app = FastAPI()
@app.get("/search")
#! name = Саша
def search_people(name: str = ""):
with Session(engine) as session:
try:
return session.exec(
select(Person).where(Person.name == name)
).all()
except:
return {"name":"Not found"}