Я пытаюсь определить модель с использованием sqlalchemy, так что один из столбцов, которые мне нужны только в памяти для обработки, у меня нет для этого соответствующего столбца базы данных. Мне нужно, чтобы при сохранении объекта в памяти он не пытался сохранить этот специальный столбец.
Дополнительный контекст: я сопоставляю объект json с объектом алхимии sql, используя библиотеку python marshmallow. В ответе json у меня есть дополнительные поля, которые мне не нужны в базе данных, но нуждаются в памяти для вычислений.
Я искал документы sqlalchemy, но не смог найти способ пропустить сохранение определенных столбцов.
class AdSchema(Schema):
"""Schema Mapping class."""
id = fields.Int(dump_only=True)
available_formats = fields.List(fields.Str())
@post_load
def make_ad(self, data):
return AdModel(**data)
class AdModel(Base):
"""Ad ORM class."""
__tablename__ = 'ad_model'
id = Column(Integer, primary_key=True)
Я что-то упустил здесь?
По сути, я ищу «виртуальный» атрибут, аналогичный тому, что доступен в Rails ORM Как добавить виртуальный атрибут к модели в Ruby on Rails?
__init__
, sqlalchemy это не нравится. - person Pratik Khadloya   schedule 02.03.2018__init__
: Mapping не накладывает никаких ограничений или требований на метод конструктора (__init__
) для класса. - person Ilja Everilä   schedule 04.03.2018