PythonのフレームワークであるFlaskで、データベース内を検索しようとすると、TypeError: 'TextClause' object is not iterableというエラーが発生します。sqlchemyでコードを実装すると上手くいくのですが、Mysqlだとどうしても上手くいきません。
実際のコードは、こちらです。
Mysql版
@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)
sqlchemyだと上手くいきます。
@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()
{% 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 %}
誰か分かる人は、何が原因なのかを教えていただけると幸いです。