Skip to content Skip to sidebar Skip to footer

Sqlalchemy: Initializing Attribute Based On Other Attribute

I'm working on a Python project using SQLAlchemy. I have following class (I have omitted some methods irrelevant to the question): class Cmd(Base): __tablename__ = 'commands'

Solution 1:

You can use the @reconstructor decorator:

from sqlalchemy.orm import reconstructor
classCmd(Base):
    __tablename__ = "commands"
    dbid = Column(Integer, Sequence("commands_seq"), primary_key = True)
    cmd_id = Column(SmallInteger)
    instance_dbid =  Column(Integer, ForeignKey("instances.dbid"))
    type = Column(String(20))

    __mapper_args__ = {
    "polymorphic_on" : type,
    "polymorphic_identity" : "Cmd"
    }

    def__init__(self, cmd_id):
        self.cmd_id = cmd_id
        self.cmd_name = event_names[self.cmd_id]

    @reconstructordefinit_db_load(self):
        self.cmd_name = event_names[self.cmd_id]

See this doc under "Constructors and Object Initialization".

Post a Comment for "Sqlalchemy: Initializing Attribute Based On Other Attribute"