映射包含对另一个类的引用的类

时间:2011-11-28 14:31:47

标签: python sqlalchemy

我有这样的事情:

class A ():
   [...]

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

我想通过SQLAlchemy将B存储到数据库中。我认为我需要将AB定义为两个不同的表 - 适当地映射AB的所有其他属性。然后,我需要将A映射到B作为属性,但我不知道该怎么做。

我的想法是好还是我错过了什么?知道我缺少哪些函数 - 或者文档的哪一页涵盖它?

由于

1 个答案:

答案 0 :(得分: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的名称为UserB Address