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

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

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

18 ответов

31 просмотр

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

Сергей- Автор вопроса
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? Что-то запутался..

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта