无法使用SQLAlchemy创建一对一关系

时间:2019-04-28 11:22:07

标签: python mysql sqlalchemy mysql-workbench

我正在将MariaDB服务器和MySQL工作台用于python的客户端和SQLAlchemy。我有两个表userssessions。我要实现的是这两列之间的一对一映射,即每个用户只能有一个会话。这是我的模型声明。

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

0 个答案:

没有答案