Я использую сервер 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, он генерирует отношения один ко многим между двумя таблицами. Вот изображение: