170 похожих чатов

А чем всё же ужасна такая запись? stmt = insert(operation).values(**new_operation.dict()) ведь корректность

new_operation уже проверена ранее пайдентиком

18 ответов

34 просмотра

Пидантик не описывает модели бд, соответственно .дикт вернёт хз что, не имеющее отношение к модели. Каждое изменение будет приводить к проблемам

Сергей- Автор вопроса
Tishka17
Пидантик не описывает модели бд, соответственно .д...

но это ведь как раз та проблема, из-за которой Тианголо делал SQLModel — что в схемах пидантика приходится дублировать модели алхимии и здесь корректность задается именно этим — что мы в схеме фактически продублировали то что в модели

Сергей- Автор вопроса
Сергей
но это ведь как раз та проблема, из-за которой Тиа...

в примере из видео — мы видим что схема полностью дублирует модель class OperationCreate(BaseModel): id: int quantity: str figi: str instrument_type: str date: datetime type: str operation = Table( "operation", metadata, Column("id", Integer, primary_key=True), Column("quantity", String), Column("figi", String), Column("instrument_type", String, nullable=True), Column("date", TIMESTAMP), Column("type", String), )

Сергей- Автор вопроса
Tishka17
Пидантик не описывает модели бд, соответственно .д...

как понял такое дублирование стандартная вещь для ФастАпи. или можно сделать лучше? какой способ был бы лучше для данного примера?

Сергей
в примере из видео — мы видим что схема полностью ...

То что схема дублирует модель - частный случай. Как правило могут быть вычислимые поля в схеме или какие-то поля которые необходимо скрыть

Сергей- Автор вопроса
Arkady Strugatsky
То что схема дублирует модель - частный случай. Ка...

но всё же основное их назначение — валидировать корректный ввод, в данном случае соответствующий модели БД. поэтому не оч понимаю придирку Тишки (и как можно сделать красивее)

Сергей- Автор вопроса
Arkady Strugatsky
То что схема дублирует модель - частный случай. Ка...

если необходимо скрыть вроде это можно сделать в опциях метода, возвращающего дикт

Сергей
но это ведь как раз та проблема, из-за которой Тиа...

Это как раз та проблема, которая усугубляется использованием sqlmodel. Две разные модели, описывающие разные штуки объединяют и заставляют быть одинаковыми

Сергей- Автор вопроса
Tishka17
Это как раз та проблема, которая усугубляется испо...

Но конкретно здесь — схема OperationCreate создается именно такой чтобы корректно описывать инфу нужную для добавления операции. За счет верного описания можно передавать ее dict() инсерту. И мне показалось по доке что это стандартный подход для Фастапи Как делаешь ты вместо этого, мб можно увидеть пример в каком-то репозитории?

Сергей
Но конкретно здесь — схема OperationCreate создает...

Стандартный подход в доке фастапи - хуячить говнокод

Сергей
Но конкретно здесь — схема OperationCreate создает...

OperationCreate в какой-то момент может совпадать с моделью бд по набор полей, но не обязана. И не будет совпадать всю жизнь приложения. Например, у меня часто запрос юзера приводит к созданию нескольких моделей бд. Юзер апи просто не знает что какие-то штуки в бд хранятся нормализованно. В других случаях ты можешь захотеть сохранить апи меняя структуру бд. Банально, какие-то поля могут начать игнорироваться или влиять на генерацию чего-то

Сергей- Автор вопроса
Tishka17
OperationCreate в какой-то момент может совпадать ...

Но какой подход будет верным — вручную доставать по одному полю из схемы и передавать в инсерт по именам?

Сергей
Но какой подход будет верным — вручную доставать п...

Да, передавать по одному явным образом. Чтобы когда будешь искать какие юзаются, ты сразу нашел

Сергей- Автор вопроса
Tishka17
Почему не юзать ORM?

Можно какой-то пример? В данном случае есть ORM модель operation, как ее юзать по полученной в запросе схеме OperationCreate?

Сергей- Автор вопроса
Tishka17
Почему не юзать ORM?

Или в каком смысле юзать ORM? Что-то запутался..

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта