Comments 27
@app.get("/")
def read_root():
# изменим роут таким образом, чтобы он брал данные из БД
query = (
select(
[
posts_table.c.id,
posts_table.c.created_at,
posts_table.c.title,
posts_table.c.content,
posts_table.c.user_id,
users_table.c.name.label("user_name"),
]
)
.select_from(posts_table.join(users_table))
.order_by(desc(posts_table.c.created_at))
)
return await database.fetch_all(query)
Функция read_root
должна быть асинхронной, иначе будет ошибка.
Если используете databases
, имейте ввиду, что оно не поддерживает параметры по умолчанию для полей в модели:
https://github.com/encode/databases/issues/72
https://github.com/encode/databases/pull/206
Автор FastAPI уже этим занимается. :)
Остается пожелать ему удачи и терпения.
А может просто не страдать из за "патриотизма" к языку и искать более удобные средства в других? )
Ну или сделать все самому, если совсем клинический случай ?
Пример языка, где более удобно, подскажете?
Да на выбор )
Java — Hiber,
PHP — Doctrine,
RoR, для руби,
Даже для фронта предложу VuexORM )
Что правда ничего не подошло? )
Я, похоже, не очень внимательно прочитал gigimon
В плане просто описания моделей и получения объектов из базы, как постоянный пользователь Doctrine, согласен что она удобнее.
Однако pydantic модели ещё и для валидации ввода от пользователя используются, тут доктрина не при делах. Использую валидаторы из Symfony, но назвать их удобными не могу. Понятно, что гибкости намного больше, но и сил, даже в простых случаях, больше уходит.
Разве fastapi не асинхронный фреймворк? Для работы с постгре не нужен asyncpg? Разве алхимия дружит с asyncpg?
А это имеет значение, если я питон раньше в глаза не видел? )
Can I use asyncpg with SQLAlchemy ORM?
Short answer: no. asyncpg uses asynchronous execution model and API, which is fundamentally incompatible with SQLAlchemy. However, it is possible to use asyncpg and SQLAlchemy Core with the help of a third-party adapter, such as asyncpgsa or databases.
Если интересно, посмотрите документацию databases, там есть примеры.
Fastapy хорош, думал свой корявенький api прокси на него портировать.
или следующий пректик для себя на нем запилю.
А peewe вместо алхимии пробовали? Честно сказать fast api все больше становится похожим на Флакс, не представляю пока что действительно сложный проект на этом фреймворке. Хотя автор утверждал что вдохновлялся Джанго, в том числе, но складывается ощущение, что он это пропустил или не успел ещё реализовать
Из самого близкого нашёл fastapi.tiangolo.com/advanced/openapi-callbacks, но может где то есть побольше
Спасибо за развёрнутую статью!
Пишем веб сервис на Python с помощью FastAPI