SQLAlchemy:向Obj传递参数

2024-10-01 00:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的项目中使用SQLAlchemy。在

我有两个班,叫“酒吧”和“福”

class Bar(object):
    def valueize(self, name):
         # do some crazy magic
         return value


class Foo(Base):
   id = Column(...
   name = Column(...

   @property
   def value(self):
       return self._bar.valueize(self.name)

Foo是由我直接构造对象或者当它从数据库加载Foo对象时由SQLalchemy构造的。但是Foo需要一个Bar对象才能工作。但是我怎么把对Bar的引用放到Foo中呢?在

通常,我只需将该条传递给Foo构造函数。但是,这在这里行不通,因为SQLAlchemy正在创建对象。在

我想做的是用Bar对象配置一个会话,这样当Foo对象被添加到会话中时,Bar对象被注入到Foo对象中。在

我尝试过的

SQLAlchemy有一个事件系统。其中一个会话事件在连接上。每当向会话中添加对象时,都会调用此函数。但是,当从数据库加载对象时不会调用它。在

从数据库加载时会调用一些事件,但这些事件是基于每个映射器的。Bar对象需要与单个会话相关联。在


Tags: 项目对象nameself数据库returnfoosqlalchemy
1条回答
网友
1楼 · 发布于 2024-10-01 00:23:56

如果所有Foo只需要一个Bar,那么可以在Foo中使用一个类属性或方法。由于您还没有走这条明显的道路,您似乎需要为每个新的Foo构造一个新的Bar。可能instrumentation具有所需的事件。缓存示例必须有一种方法来截获加载事件。在

相关问题 更多 >