Python 烧瓶的sqlalchemy.exc.ProgrammingError

Python 烧瓶的sqlalchemy.exc.ProgrammingError,python,database,postgresql,flask,sqlalchemy,Python,Database,Postgresql,Flask,Sqlalchemy,我有一个带有postgresql的flask应用程序,我想根据用户的好友姓名对其进行排序。为了解释数据库,它在bestfriend中有一对一的关系,我使用flask migrate和Alembic。但是出现了这个错误,thanx如果你能告诉我如何解决它,问题在哪里 错误 sqlalchemy.exc.ProgrammingError ProgrammingError:必须出现ProgrammingError列users\u 1.name 在GROUP BY子句中或在聚合函数第2行中使用: 从用户

我有一个带有postgresql的flask应用程序,我想根据用户的好友姓名对其进行排序。为了解释数据库,它在bestfriend中有一对一的关系,我使用flask migrate和Alembic。但是出现了这个错误,thanx如果你能告诉我如何解决它,问题在哪里

错误

sqlalchemy.exc.ProgrammingError

ProgrammingError:必须出现ProgrammingError列users\u 1.name 在GROUP BY子句中或在聚合函数第2行中使用: 从用户加入选择users.name作为名称,users\u 1.name作为名称

…^'选择users.id作为users\u id,选择users.name作为users\u name, users.age作为users\u age,users.email作为users\u email, users.bestfriend\u id作为用户\u bestfriend\u id\n从用户加入选择 users.name作为名称,users\u 1.name作为fn\n来自用户的用户作为 users\u 1.id=users.bestfriend\u id组BY users.name AS anon_1.name=users.name按anon_1.fn ASC限制排序的anon_1.fn %param_1s偏移量%param_2s'{'param_1':2',param_2':0}

model.py:

friends = db.Table('friends',
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
db.Column('friend_id', db.Integer, db.ForeignKey('users.id'))
)

class Users(db.Model):
   id = db.Column(db.Integer, primary_key = True)
   name = db.Column(db.String(50), index=True)
   age= db.Column(db.Integer )
   email = db.Column(db.String(50),index=True, unique= True)
   bestfriend_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete ='SET NULL'), nullable=True)
   

   is_bestfriend = db.relationship( 'Users', uselist=False, remote_side=[id], post_update=True)
view.py

#condition to sort base on bestfriend name                  
    elif request.args.get('sort') == 'bf':
           sortBy = 'bf'
           friend = db.aliased(Users)
           sub = db.session.query(
                   Users.name, friend.name.label('fn')).\
                   join(friend, Users.is_bestfriend).group_by(Users.name).subquery()

           monkey = Users.query.join(sub, sub.c.name == Users.name).\
                        order_by(sub.c.fn.asc()).paginate(page, MONKEYS_PAGE, False)

您忘记将friend.name.label“fn”添加到组中

join(friend, Users.is_bestfriend).group_by(Users.name).group_by('fn').subquery()