Pull to refresh

Comments 26

@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 должна быть асинхронной, иначе будет ошибка.

Вот когда-нибудь кто-то скрестит sqlalchemy и pydantic модели, тогда будет хорошо. А пока что, получается дублирование кода в плане описания моделей :(
Это очень круто, надеюсь у него получится :)

А может просто не страдать из за "патриотизма" к языку и искать более удобные средства в других? )
Ну или сделать все самому, если совсем клинический случай ?

эм, странные у вас выводы :) Я нигде про это не говорил и для разных задач использую разный инструментарий, просто этот момент очень расстраивает и останавливает от использования клевого fastapi

Выводы основаны на опыте
Второе предложение не просто так )
Если действительно вам будет комфортней с такой связкой — почему не стать "инициатором"?
Ну или подмочь тем кто пытается ?

Не у всех есть время и желание на достаточно большой допилинг фреймворка.

Ну вот мы и пришли к моменту "пусть делает кто то другой" )


PS. А фреймворки на самом деле не страшны в плане допилинга

Да на выбор )
Java — Hiber,
PHP — Doctrine,
RoR, для руби,
Даже для фронта предложу VuexORM )


Что правда ничего не подошло? )

Я, похоже, не очень внимательно прочитал gigimon


В плане просто описания моделей и получения объектов из базы, как постоянный пользователь Doctrine, согласен что она удобнее.


Однако pydantic модели ещё и для валидации ввода от пользователя используются, тут доктрина не при делах. Использую валидаторы из Symfony, но назвать их удобными не могу. Понятно, что гибкости намного больше, но и сил, даже в простых случаях, больше уходит.

Хмм, очередной hellow world. Все это и много чего сверху мы могли увидеть и в официальной документации.

Смотрите, я изучил питон. Надо поделится.

Разве fastapi не асинхронный фреймворк? Для работы с постгре не нужен asyncpg? Разве алхимия дружит с asyncpg?

А это имеет значение, если я питон раньше в глаза не видел? )

Все верно, fastapi асинхронный. SQLAlchemy Core вполне себе дружит с 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 все больше становится похожим на Флакс, не представляю пока что действительно сложный проект на этом фреймворке. Хотя автор утверждал что вдохновлялся Джанго, в том числе, но складывается ощущение, что он это пропустил или не успел ещё реализовать

Нет, с Peewee не доводилось работать. Не знаете как у него с асинхронностью? На гитхабе нашел репозиторий peewee-async, но что то он не очень активно обновляется.
С peewee-async жить можно, но есть баги, например транзакции не работает для вложенных корутин(уже не помню подробности, могу что-то перепутать) и вот на такой я натыкался github.com/05bit/peewee-async/issues/127
fastapi это обертка над starlette, само собой он больше похож на flask. а под серьезным проектом вы имеете ввиду тучу связанных моделей и префетчи на два экрана?
подскажите, где почитать про описание существующего АПИ, т.е. использование fastAPI для вызовов и документирования АПИ, без создания собственно АПИ.
Из самого близкого нашёл fastapi.tiangolo.com/advanced/openapi-callbacks, но может где то есть побольше
Only those users with full accounts are able to leave comments. Log in, please.