2011-11-28 72 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