sqlalchemy как реализовать связь 1 к 1

Я знаю, что есть много мануалов на эту тему, я перечитал их с десяток и все равно не понял. Меня очень путает название классов и табилц в них.

Мой текущий код (неправильный). Как видно из кода, каждый пользователь обладает мета информацией. Я разделил таблицу users на 2 части что бы она не слишком раздувалась.

class UserData(Base):
    __tablename__ = "users"

    user_id = Column(Integer, primary_key=True, index=True)
    age = Column(Integer, index=True)
    first_name = Column(String, index=True)
    last_name = Column(String, index=True)
    country = Column(String, index=True)
    city = Column(String, index=True)
    comment = Column(String, index=True)
    users_meta = relationship("UserMeta", uselist=False, back_populates="users")


class UserMeta(Base):
    __tablename__ = "users_meta"

    email = Column(String, unique=True, index=True)
    hashed_password = Column(String)
    is_active = Column(Boolean, default=True)
    parent = Column(Integer, ForeignKey("users.id"))
    user_id = Column(Integer, ForeignKey('users.user_id'))
    users = relationship("UserData", back_populates="users")

Дополнительно меня интересует зачем нужен relationship, в традиционном sql (без ORM) есть только foreign key насколько мне известно.


Ответы (0 шт):