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

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

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

18 ответов

14 просмотров

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

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

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

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

здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Any electron dev here?
Sayanth Tezro
12
Карта сайта