SQLAlchemy を使用して Python プロジェクトに取り組んでいます。私は次のクラスを持っています(質問に関係のないいくつかのメソッドを省略しました):
class Cmd(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]
ご覧のとおり、クラスのインスタンスを初期化すると、リストを使用して属性cmd_name
から属性が作成されます(これも省略されています。コマンド名を含む単純なリストです)。cmd_id
event_names
オブジェクトを作成しCmd
、セッションを追加し、セッションをコミットします。アプリケーションを閉じて再度起動した後、Cmd
SQLAlchemy クエリを使用してこれをロードしようとしました。オブジェクトはロードされますが、もちろん__init__
呼び出されcmd_name
ず、設定もされません。
クエリでオブジェクトをself.cmd_name = event_names[self.cmd_id]
取得した後、いくつかのコード ( ) を実行する簡単な方法があるかどうかを知りたいです。Cmd
もちろん、特別な方法を実行して、クエリの後に常に起動することもできますが、よりエレガントで自動的な方法を探しています。
ドキュメントを読んで、ORM イベント リスナーに関する情報を見つけましたが、このような単純なケースには多すぎるようです。属性イベントに関する記事も見つけましたが、それらはのみで機能しcolumn_property
ますrelationship
。私が望むものを達成するための短くてエレガントな方法はありますか?