Отображение класса, который содержит ссылки на другой класс - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть что-то вроде этого:

class A ():
   [...]

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

И я хотел бы сохранить B в базе данных через SQLAlchemy . Я думаю, что мне нужно определить и A, и B как две разные таблицы - сопоставляя все остальные свойства A и B соответственно. Затем мне нужно сопоставить A с B как свойство, но я не уверен, как это сделать.

Мое мышление хорошо или я что-то упустил? Любая идея о том, какие функции я вызываю, отсутствует или какая страница документации покрывает это?

Спасибо

1 Ответ

1 голос
/ 28 ноября 2011

Вы действительно должны определить две сущности базы данных, A и B, и отношение 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()

Для примера из реальной жизни читайте учебник ORM , где вашему классу A присвоено имя User и B Address.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...