相关疑难解决方法(0)

SQLAlchemy IN子句

我正在尝试在sqlalchemy中执行此查询

SELECT id, name FROM user WHERE id IN (123, 456)
Run Code Online (Sandbox Code Playgroud)

我想[123, 456]在执行时绑定列表.

python sqlalchemy

207
推荐指数
5
解决办法
15万
查看次数

Flask-Sqlalchemy .in_() 方法对我不起作用

我目前正在使用 Flask 和 SQLAlchemy 进行一个项目,基本上是像 discourse 这样的论坛软件,但使用的是 Python 3。

目前有两种模式,论坛和线程

我有一个 Jinja 模板,应该可以生成论坛主题的表格记录,请参见下文。

{% for thread in Forum.ForumThreads.filter_by(TagID.in_(TagsToShow)): %}
    <TR Class="ThreadRecord">
        <TD><a href="{{thread.ForumID}}/Thread/{{thread.ThreadID}}">{{thread.Title}}</a></TD>
        <TD class="ThreadTag{{thread.TagID}}">{{thread.Tag.Name}}</TD>
        <TD>{{thread.PostList.count()}}</TD>
        <TD>{{thread.User.Name}}</TD>
        <TD>{{thread.CreationDate}}</TD>
    </TR>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这由以下视图调用(稍微简化)。

@app.route('/Forum/<int:URLForumID>/ForumThreads')
    def ThreadsTable(URLForumID):
    TagsToShow = (1,2,3,4)
    Forum = models.Forum.query.filter_by(ForumID=URLForumID).first()
    return flask.render_template('ForumThreads.html', Forum=Forum, TagsToShow=TagsToShow)
Run Code Online (Sandbox Code Playgroud)

但是,每次我尝试运行它时,都会收到错误“jinja2.exceptions.UndefinedError: 'TagID' is undefined”。

我试过用{% for thread in Forum.ForumThreads.filter_by(TagID=1): %}运行它,它似乎运行良好,所以我的问题似乎在于我如何调用 .in_() 方法。我已经搜索了 SQLalchemy文档,但一直找不到答案,有人能指出我正确的方向吗?

我不知道它是否有帮助,但下面是使用的 SQLalchemy 模型的两个精简版本。

class Forum(db.Model):
    __tablename__ = "Forum"
    ForumID = db.Column(db.Integer, primary_key=True)
    ForumName = db.Column(db.Unicode(20), …
Run Code Online (Sandbox Code Playgroud)

flask python-3.x flask-sqlalchemy

2
推荐指数
1
解决办法
5605
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

python ×1

python-3.x ×1

sqlalchemy ×1