Sqlalchemy 从自参考多对多关系表中选择所需值时需要建议

Sqlalchemy 从自参考多对多关系表中选择所需值时需要建议,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我在flask SQLAlchemy中有以下自参考多对多模型,但无法返回SQL查询中提供的所有列值。 请有人建议: 如何在下面提供的代码中返回经理姓名 如果可以按特定的管理器(或)筛选输出行,则只能使用联接 以下是我的模型: # Users will act as both users/employees and also manager class Users(db.Model): id = db.Column(db.Integer, primary_key=True) username =

我在flask SQLAlchemy中有以下自参考多对多模型,但无法返回SQL查询中提供的所有列值。 请有人建议:

  • 如何在下面提供的代码中返回经理姓名
  • 如果可以按特定的管理器(或)筛选输出行,则只能使用联接
  • 以下是我的模型:

    # Users will act as both users/employees and also manager
    class Users(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    managers = db.relationship('Users',
                secondary = association_table, 
                primaryjoin=id == association_table.c.user_id, 
                secondaryjoin=id == association_table.c.manager_id, 
                backref=db.backref('employees', lazy='dynamic'))
    user_subs = db.relationship('Submissions', backref='sub_created_user', lazy='dynamic')
    
    def __repr__(self):
        return f"Name: {self.username}"
    
    # association table to relate user-manager m:m relationship
    association_table = db.Table('approvals', db.Model.metadata,
                                    db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
                                    db.Column('manager_id', db.Integer, db.ForeignKey('users.id')))
    
    
    # User submissions will be stored here
    class Submissions(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    submission_name = db.Column(db.String(10))
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    
    我想显示用户提交的所有内容以及他们的经理姓名。下面的代码为我提供了除经理姓名以外的所有信息-它作为
    类返回

    for s in Submissions.query.all():
        print(f"Submission: {s.submission_name} by User: {s.sub_created_user.username} whose Manager:{s.sub_created_user.managers}")
    
    输出

    INFO sqlalchemy.engine.base.Engine ()
    Submission: Sub1 by User: B whose Manager:[Name: A]
    Submission: Sub2 by User: C whose Manager:[Name: B]
    Submission: Sub3 by User: F whose Manager:[Name: E, Name: D]
    
    所需的SQL:


    感谢您的反馈

    即使在多次尝试之后,我也无法正确选择“managers”对象。所以我在数据库中创建了一个“用户”作为“管理者”的视图,并将其用作SQLAlchemy中的“管理者”模型,现在我能够准确地检索到我想要的信息。由于这不是确切的答案,我将其作为评论发布
    select submissions.submission_name, users.username as user_name, managers.username as manager_name
    from submissions join users
    on submissions.user_id = users.id
    join approvals
    on users.id = approvals.user_id
    join users as managers
    on approvals.manager_id = managers.id
    order by users.username, submission_name, managers.username