Невозможно создать отношения один к одному с помощью SQLAlchemy. - PullRequest
1 голос
/ 28 апреля 2019

Я использую сервер MariaDB и MySQL для клиента и SQLAlchemy с python. У меня есть две таблицы users и sessions. Чего я хочу добиться, так это взаимно-однозначного сопоставления между этими двумя столбцами, то есть у каждого пользователя может быть один и только один сеанс. Вот мое объявление модели.

class User(Base):
    __tablename__ = 'users'

    id = Column('id', INTEGER, Sequence('users_id_seq', start=1,
                                        increment=1),
                primary_key=True)

    email = Column('email', VARCHAR(100), nullable=False, unique=True)
    first_name = Column('first_name', CHAR(50))
    last_name = Column('last_name', CHAR(50))
    password = Column('password', VARCHAR(128))
    profile_pic = Column('profile_pic', VARCHAR(500))

    # relationships with other tables
    session = relationship('Session', uselist=False, back_populates='user')

и

class Session(Base):
    __tablename__ = 'sessions'

    user_id = Column('user_id', INTEGER, ForeignKey('users.id'),
                     nullable=False, primary_key=True)
    token = Column('token', VARCHAR(36), nullable=False)

    # relationship
    user = relationship('User', back_populates='session')

Кажется, это работает нормально, но когда я выполняю обратный инжиниринг схемы с использованием MySQL, он генерирует отношения один ко многим между двумя таблицами. Вот изображение:

enter image description here

...