2011-11-28 75 views
0

引用一類我有這樣的事情:映射包含另一個類

class A(): 
    [...] 

class B(): 
    def __init__(self): 
    self.fubar = A() 

而且我想通過SQLAlchemy到B存儲到數據庫中。我認爲我需要將AB定義爲兩個不同的表格 - 適當地映射AB的所有其他屬性。然後,我需要將A映射爲B作爲屬性,但我不知道如何執行此操作。

我的思維很好嗎?或者我錯過了什麼?任何想法我缺少什麼函數調用 - 或文檔的哪個頁面覆蓋它?

感謝

+0

不知道我明白你在問什麼。我的直接答案是:「不會酸洗一個物體並將其存儲在文本字段中?」 – mac

+0

@mac:可悲的是,儘管努力+1。我需要能夠通過數據庫編輯A的屬性 - 或者需要外部代碼來完成它。 – Sardathrion

回答

1

你確實應該定義兩個數據庫實體,AB和1:1或1:這兩個n之間的關係:

Base = declarative_base() 

class A(Base): 
    __tablename__ = 'a' 

    id = Column(Integer, primary_key=True) 

class B(Base): 
    __tablename__ = 'b' 

    id = Column(Integer, primary_key=True) 
    a_id = Column(Integer, ForeignKey('a.id')) 

    foobar = relationship('A') 

    def __init__(self): 
     self.foobar = A() 

對於真實世界的例子,讀the ORM tutorial,其中您的類別A被命名爲UserBAddress