Python 烧瓶peewee到烧瓶sqlalchemy-操作数应包含1列

Python 烧瓶peewee到烧瓶sqlalchemy-操作数应包含1列,python,mysql,flask-sqlalchemy,flask-peewee,Python,Mysql,Flask Sqlalchemy,Flask Peewee,我有一个问题,这个错误操作数应该包含1列,我得到的是关于它们是子查询中的两个字段,但从我的代码和使用flask sqlalchemy,我无法找出哪里出了问题。我正在将我的应用程序从flask peewee转换为flask sqlalchemy,这是我无法解决的一个问题 这里是主要的查询代码,第一个是我新的sql alchemy查询,另一个是peewee查询 //SqlAlchmey return UserBeer.query.filter(or_( UserBeer.id < self.f

我有一个问题,这个错误操作数应该包含1列,我得到的是关于它们是子查询中的两个字段,但从我的代码和使用flask sqlalchemy,我无法找出哪里出了问题。我正在将我的应用程序从flask peewee转换为flask sqlalchemy,这是我无法解决的一个问题

这里是主要的查询代码,第一个是我新的sql alchemy查询,另一个是peewee查询

//SqlAlchmey
return UserBeer.query.filter(or_( UserBeer.id < self.following(), UserBeer.username == self)).order_by(UserBeer.tried_date.desc()).limit(5)

//Peewee Query
return UserBeer.select(Beer, UserBeer).join(Beer).where(
            (UserBeer.username << self.following()) |
            (UserBeer.username == self)).order_by(UserBeer.tried_date.desc()).limit(5)
我知道我要问的第二个问题是两件不同的事情,但似乎您在SQLAlchemy中声明了模型中的关系,这里是关系模型,我认为它是正确的,但不确定。另外,我的用户模型不确定是否缺少一些东西

class Relationship(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    from_user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    to_user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    from_user = db.relationship('User', backref=db.backref('relationships', lazy='joined'), foreign_keys=from_user_id)
    to_user = db.relationship('User', backref=db.backref('related_to', lazy='joined'), foreign_keys=to_user_id)

class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(), unique=True)
    email = db.Column(db.String(), unique=True)
    bio = db.Column(db.String(160))
    password = db.Column(db.String(200))
    joined_at = db.Column(db.DateTime(), default=datetime.datetime.now)
    is_admin = db.Column(db.Boolean(), default=False)
    roles = db.relationship('Role', secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))
编辑 我想当我再看一遍的时候,整个错误可能会有用

OperationalError: (_mysql_exceptions.OperationalError) (1241, 'Operand should contain 1 column(s)') [SQL: u'SELECT user_beer.id AS user_beer_id, user_beer.username_id AS user_beer_username_id, user_beer.beer_id AS user_beer_beer_id, user_beer.rating AS user_beer_rating, user_beer.description AS user_beer_description, user_beer.recommend AS user_beer_recommend, user_beer.tried_date AS user_beer_tried_date \nFROM user_beer \nWHERE user_beer.id < (SELECT relationship.id AS relationship_id, relationship.from_user_id AS relationship_from_user_id, relationship.to_user_id AS relationship_to_user_id \nFROM relationship \nWHERE %s = relationship.from_user_id) OR %s = user_beer.username_id ORDER BY user_beer.tried_date DESC \n LIMIT %s'] [parameters: (1L, 1L, 5)]
OperationalError:_mysql_异常。OperationalError 1241,'操作数 应包含1列'

告诉您正在尝试将列列表与一个用户id列进行比较

return UserBeer.query.filter(or_( UserBeer.id < self.following(), UserBeer.username == self)).order_by(UserBeer.tried_date.desc()).limit(5)
在上面的代码中,UserBeer.id是一列值,self.following是多列值

OperationalError:_mysql_异常。OperationalError 1241,'操作数 应包含1列'

告诉您正在尝试将列列表与一个用户id列进行比较

return UserBeer.query.filter(or_( UserBeer.id < self.following(), UserBeer.username == self)).order_by(UserBeer.tried_date.desc()).limit(5)

在上面的代码中,UserBeer.id是一列值,self.following是多列值。

从Peewee切换到SQLAlchemy?你究竟为什么要做这样的事

老实说,如果您在Peewee中遇到了您认为是错误的东西,或者发现事情过于困难或不直观,这正是作为维护人员对我最有用的反馈。当然,很高兴听到人们说Peewee很棒,谢谢,但最终离开的人通常最有发言权


请过来留言或打电话给我-我非常感谢您抽出几分钟的时间。

从Peewee切换到SQLAlchemy?你究竟为什么要做这样的事

老实说,如果您在Peewee中遇到了您认为是错误的东西,或者发现事情过于困难或不直观,这正是作为维护人员对我最有用的反馈。当然,很高兴听到人们说Peewee很棒,谢谢,但最终离开的人通常最有发言权


请过来留言或打电话给我-我将非常感谢您抽出几分钟的时间。

什么是self.following?这是我的用户模型中的一个函数,它返回像twitter一样跟随该用户的用户。它所做的只是传递该位下的两个查询是内容,我使用peewee的时候是第一个版本,另一个现在我正在转换成sqlalchemy如果你不介意我问的话,你为什么要从flask peewee转换成flask sqlalchemy什么是self.following?这是我的用户模型中的一个函数,它返回跟随该用户(如twitter)的用户。它所做的只是在该位下传递两个查询,即内容,以及版本,一个是我使用peewee时的版本,另一个是我现在转换为sqlalchemy为什么要从flask peewee切换到flask sqlalchemy,如果你不介意我问的话刚试过这个,我发现了一些关于基本查询没有id属性的错误。我现在在中看到了问题。我忘记了刚刚试过这个,我发现了一些关于基本查询没有id属性的错误。我现在在中看到了问题。我忘了