由于一个或多个映射器初始化失败,无法在 SQLAlchemy 中创建记录

Geo*_*e L 2 python sql sqlalchemy flask-sqlalchemy

我有一个模型文件(简化)

Repos 有一个用户,用户可以有多个 repos。

class Repo(Base):
    __tablename__ = "repos"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(512), unique=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    user = db.relationship("User", back_populates="users")

class User(Base):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), unique=True)
    repos = db.relationship("User", back_populates="repos")
Run Code Online (Sandbox Code Playgroud)

当我尝试插入记录时,出现错误:

一个或多个映射器未能初始化 - 无法继续初始化其他映射器。原始异常是:映射器'Mapper|User|users' 没有属性'users'

如何修复我的模型?

r-m*_*m-n 6

back_populates对于user关系应该是repos,和repos关系应该是user

class Repo(Base):
    __tablename__ = "repos"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(512), unique=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    user = db.relationship("User", back_populates="repos")

class User(Base):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200), unique=True)
    repos = db.relationship("Repo", back_populates="user")
Run Code Online (Sandbox Code Playgroud)