我试图做一些非常简单的事情(所以我想),但是在几个小时的研究中遇到一些问题却未能解决。
简单地说,我试图获取2个表单数据条目(使用Flask-WTForms)并查询针对表格输入的值。基本搜索功能。
我设法让我看到SQLAlchemy运行 A 查询,只是没有运气并触发回滚()。
2016-01-27 03:27:39,127 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2016-01-27 03:27:39,128 INFO sqlalchemy.engine.base.Engine SELECT "Motor"."Asset Tag" AS "Motor_Asset Tag", "Motor"."Horsepower" AS "Motor_Horsepower"
FROM "Motor"
WHERE "Motor"."Asset Tag" AND "Motor"."Horsepower"
2016-01-27 03:27:39,128 INFO sqlalchemy.engine.base.Engine {}
2016-01-27 03:27:39,129 INFO sqlalchemy.engine.base.Engine ROLLBACK
以下是一些代码段。
查看:
@app.route('/searchassets', methods=['GET', 'POST'])
def searchassets():
form = SearchAssetsForm()
results = None
if request.method == "POST":
try:
asset_tag = form.asset_search.data
horsepower = form.horsepower_search.data
results = Motor.query.filter(Motor.asset_tag, Motor.horsepower).all()
except:
db.session.rollback()
flash("Error.")
return render_template('searchassets.html', form=form, results=results)
return render_template('searchassets.html', form=form, results=results)
表单模型:
class SearchAssetsForm(Form):
asset_search = StringField('asset_search')
horsepower_search = IntegerField('horsepower_search')
模板:
{% extends "basehead.html" %}
{% block content %}
<center>
<br>
<div class="container">
<h1>Search Asset Attributes Below</h1>
<br>
<form action="" method="post" name="submit">
{{ form.hidden_tag() }}
<p>
{{ form.asset_search(placeholder=" Enter Asset Tag") }}
</p>
<p>
{{ form.horsepower_search(placeholder=" Enter Horsepower") }}
</p>
<input class="btn btn-default" type="submit" value="Submit">
</form>
<br>
<table>
<th> </th>
<th>Asset Tag</th>
<th>Horsepower</th>
<tr>
<td>{% print(results.asset_tag) %}</td>
<td>{% print(results.horsepower) %}</td>
</tr>
</table>
</center>
{% endblock %}
答案 0 :(得分:1)
嗯,你有一个裸except
子句,这使得调试成为猜谜游戏。至少,暂时删除它,看看实际的错误是什么。或者,记录异常和回溯。
我认为你没有正确使用filter()
中的支票,不应该是:
Motor.query.filter(Motor.asset_tag == asset_tag,
Motor.horsepower == horsepower).all()
或者,如果您需要filter_by()
:
Motor.query.filter(asset_tag=asset_tag,
horsepower=horsepower).all()