繁体   English   中英

从flask-sqlalchemy中的联接查询中读取列名

[英]reading column names from joined query in flask-sqlalchemy

所以我在这里有这么长的查询:

showings = db.execute("SELECT showings.cinema_id, showings.movie_id,\
                       cinemas.name, movies.name FROM showings JOIN\
                       cinemas ON showings.cinema_id=cinemas.id JOIN\
                       movies ON showings.movie_id=movies.id WHERE\
                       showings.id = :id", 
                      {"id": cinema_id}).fetchall()
return render_template("showings.html", showings2=showings2)

然后在模板中:

{% for showing in showings2 %}
   <option value="{{ showing.id }}">
     {{ showing.name }} @{{ showing.name }}
   </option>
{% endfor %}

问题是由于在两个不同的表中具有相同的列名,当前模板会两次返回相同的内容,即Cinema.name的值。是否有任何选项可以绕过它?

使用别名重命名列:

showings = db.execute(
    """SELECT showings.cinema_id
            , showings.movie_id
            , cinemas.name AS cinema_name
            , movies.name AS movie_name
       FROM   showings 
       JOIN   cinemas ON showings.cinema_id=cinemas.id
       JOIN   movies ON showings.movie_id=movies.id
       WHERE  showings.id = :id""", {"id": cinema_id}).fetchall()

并在模板中使用上述别名:

<option value="{{ showing.id }}">
    {{ showing.cinema_name }} @ {{ showing.movie_name }}
</option>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM