Python peewee.OperationalError:near";“作为:语法错误

Python peewee.OperationalError:near";“作为:语法错误,python,flask,peewee,Python,Flask,Peewee,所以我不太明白到底是什么问题。我正在使用python flask,目前正试图从我的帖子模型中调用某些帖子。但是,我总是收到“peewee.OperationalError:near“AS”:syntax error”错误消息,这是由我的用户模型中的以下类方法引起的: @classmethod def get_stream(self): return Post.select().where(Post.user == self) 我在以下路径中调用此方法来定义流,

所以我不太明白到底是什么问题。我正在使用python flask,目前正试图从我的帖子模型中调用某些帖子。但是,我总是收到“peewee.OperationalError:near“AS”:syntax error”错误消息,这是由我的用户模型中的以下类方法引起的:

    @classmethod 
    def get_stream(self):
        return Post.select().where(Post.user == self)
我在以下路径中调用此方法来定义流,然后将其传递给模板:

@app.route('/stream')
@app.route('/stream/<username>')
def stream(username=None):
    template = 'stream.html'
    if username and username != current_user.username:
        user = social.User.select().where(social.User.username**username).get()
        stream = user.posts.limit(100)
    else:
        stream = current_user.get_stream().limit(100)
        user = current_user
    if username:
        template = "user_stream.html"
#   stream = social.Post.select().where(social.Post.user == current_user.id)
    return render_template(template, stream=stream, user=user)
回溯(最近一次呼叫最后一次)


在我的
用户
模型中定义方法之前的
@classmethod
阻止了它的工作。我仍然需要弄清楚原因,但现在它可以工作。

在我的
用户
模型中定义方法之前,
@classmethod
阻止了它的工作。我仍然需要弄清楚原因,但现在它起作用了。

@classmethod
装饰方法会告诉Python将类而不是实例作为第一个参数来传递。通常,在这种情况下,您可以将第一个参数命名为
cls
,以保持清楚

您的方法试图通过调用它的用户实例获取所有
Post
s,但是调用该方法会传递
user
类。删除
@classmethod
装饰程序

def get_stream(self):
    return Post.select().where(Post.user == self)

现在,
self
是一个用户实例,关系
Post.user==self
是有意义的。

@classmethod
装饰一个方法,告诉Python将类而不是实例作为第一个参数传递。通常,在这种情况下,您可以将第一个参数命名为
cls
,以保持清楚

您的方法试图通过调用它的用户实例获取所有
Post
s,但是调用该方法会传递
user
类。删除
@classmethod
装饰程序

def get_stream(self):
    return Post.select().where(Post.user == self)

现在,
self
是一个用户实例,关系
Post.user==self
是有意义的。

请显示完整的错误消息并回溯.Done。希望有帮助!这似乎不是全部信息;语法错误的地方在哪里?最上面的地方?没有比我已经发布的更多的了。上面写着:peewee.OperationalError peewee.OperationalError:near“AS”:语法错误请显示完整的错误消息并回溯到.Done。希望有帮助!这似乎不是全部信息;语法错误的地方在哪里?最上面的地方?没有比我已经发布的更多的了。它说:peewee.OperationalError peewee.OperationalError:near“AS”:语法错误
def get_stream(self):
    return Post.select().where(Post.user == self)