【发布时间】:2019-07-19 22:59:42
【问题描述】:
我正在创建一个由 CS50 的网络系列指导的应用程序,它要求我只使用原始 SQL 查询而不是 ORM。
我正在尝试创建一个搜索功能,用户可以在其中查找存储在数据库中的书籍列表。我希望他们能够查询名为“书籍”的表中的 ISBN、标题、作者列
目前,它确实可以毫无问题地发出“GET”请求,但它没有返回任何数据,我认为问题出在我编写的 SQL 行上。
路线如下:
@app.route("/", methods=['GET','POST'])
def index():
# search function for books
if request.method == "GET":
searchQuery = request.form.get("searchQuery")
# return value from the search
searchResult = db.execute("SELECT isbn, author, title FROM books WHERE isbn LIKE '%"+searchQuery+"%' OR author LIKE '%"+searchQuery+"%' OR title LIKE '%"+searchQuery+"%'").fetchall()
# add search result to the list
session["books"] = []
# add the each result to the list
for i in searchResult:
session["books"].append(i)
return render_template("index.html", books=session["books"])
return render_template("index.html")
这是我的模板。
<form method="GET">
<input type="text" name="searchQuery" class="searchTerm" placeholder="What are you looking for?">
<button type="submit" class="searchButton">submit</button>
</form>
<div>
<h3>
{% for book in books %}
{{ book }}
{% endfor %}
</h3>
</div>
请问谁能发现问题?请注意,我应该使用原始 SQL 查询和会话。
【问题讨论】:
-
你在使用 SQLite 吗?你在哪里打开数据库和游标对象?打印
searchResult时会发生什么? -
较短的
session["books"] = searchResult。或者更短的books=searchResult -
在屏幕上打印查询并直接在数据库中使用它(使用任何数据库查看器/编辑器)以查看您是否获得此查询的任何结果。也可以查看
len(searchResult) -
@furas 当你说 DB 编辑器时,比如在 Adminer 中?
标签: python sql flask sqlalchemy jinja2