无法引用外键引用在sqlalchemy

时间:2019-04-25 11:52:55

标签: python mysql sqlalchemy

我有两个表模型,一个是父模型,另一个是子模型

这是我的父母模特

class users_table(Base):
    __tablename__ = 'users_table'
    userid = Column(String(50), unique= True, primary_key= True, nullable= False)
    username = Column(String(500), unique= True, nullable= False)
    password = Column(String(500), nullable= False)
    email = Column(String(500), nullable= False, unique= True)
    role = Column(String(10), default= 'user', nullable= False)
    created_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)
    updated_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)
    children = relationship("user_status_table")

这是我的孩子模型

class user_status_table(Base):
    __tablename__ = 'user_status_table'
    id = Column(Integer, primary_key= True, nullable= False, unique= True, autoincrement=True)
    userid = Column(String(50), ForeignKey('users_table.userid'), nullable= False, unique= True)
    status = Column(String(50), default= 'active', nullable= False)
    updated_on = Column(DateTime, nullable= False, default= datetime.datetime.utcnow)

运行服务器时,出现以下错误:

"When initializing mapper Mapper|users_table|users_table, expression 'user_status_table' failed to locate a name (\"name 'user_status_table' is not defined\"). 

如果这是一个类名,请考虑在定义了两个从属类之后,将这个Relationship()添加到类中。”

1 个答案:

答案 0 :(得分:0)

正如我所看到的,您正在尝试在users_table和user_status_table之间建立一对一的关系,因为您希望user_status_table.userid是唯一的,要使用 uselist 标志

来实现这一点

下面是一个简单的示例:

class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    child = relationship("Child", uselist=False, back_populates="parent")

class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id'))
    parent = relationship("Parent", back_populates="child")