簡體   English   中英

SQLAlchemy:將參數傳遞給對象

[英]SQLAlchemy: Passing a Parameter to Object

我在我的項目中使用SQLAlchemy。

我有兩個班,叫他們Bar and Foo

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是由我直接構造對象或由SQLalchemy在從數據庫加載Foo對象時構造的。 但是Foo需要Bar對象才能工作。 但是,如何將對Bar的引用引入Foo?

通常,我只是將Bar傳遞給Foo構造函數。 但是,這在這里不起作用,因為SQLAlchemy正在創建對象。

我想做的是以某種方式配置一個帶有Bar對象的Session,以便在將Bar對象添加到Foo對象時將其注入到Foo對象中。

我嘗試過的

SQLAlchemy具有事件系統。 會話事件之一是on_attach。 只要將對象添加到會話中,就會調用此方法。 但是,從數據庫加載對象時不會調用它。

有一些事件是從數據庫加載時被調用的,但它們是基於每個映射器的。 Bar對象需要與單個會話相關聯。

如果所有Foo只需要一個Bar ,則可以在Foo使用類屬性或方法。 由於您沒有采取這種明顯的方法,因此您似乎需要為每個新的Foo構造一個新的Bar 儀器可能具有所需的事件。 緩存示例必須具有攔截加載事件的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM