

PythonのフレームワークであるFlaskで、データベース内を検索しようとすると、TypeError: 'TextClause' object is
not iterableというエラーが発生します。sqlchemyでコードを実装すると上手くいくのですが、Mysqlだとどうしても上手くいきません。

実際のコードは、こちらです。

Mysql版

[code]

    @app.route("/search",methods=["POST"])
    def search():
        req = request.form["input"]
        searches = text(""" SELECT * FROM store WHERE title LIKE '%s%' """)
        return render_template("search/search.html",searches=searches)
    
[/code]

sqlchemyだと上手くいきます。

[code]

    @app.route("/cast")
    def cast():
        casts = Cast.query.all()
        return render_template("cast.html",casts=casts,title=Cast.title,content=Cast.content)
    
        #searches = db.session.query(Store).\
                                                         filter(or_(\
                                                         Store.title.like("%" + req + "%"),\
                                                         Store.content.like("%" + req + "%"),\
                                                         Store.Region.like("%" + req + "%"),\
                                                         )).all()
    
[/code]

[code]

    {% extends "base.html"%}
    {% block content %}
    
    {% for search in searches %}
    <div class="card" style="margin-top:60px;">
        <h2>{{ search.title }}</h2>
        <p>{{ search.content }}</p>
        <p>{{ search.Region}}</p>
    </div>
    {% endfor %}
    {% endblock %}
    
[/code]

誰か分かる人は、何が原因なのかを教えていただけると幸いです。


CC BY-SA 4.0
2019-06-09T09:56:15.477
55650
2019-06-09T09:58:27.457
2019-06-09T09:58:27.457
32986
32071
question
python mysql flask
TypeError: 'TextClause' object is not iterable