为了账号安全,请及时绑定邮箱和手机立即绑定

Jinja Flask模板化SQLAlchemy显示多个结果

Jinja Flask模板化SQLAlchemy显示多个结果

MYYA 2021-04-06 17:14:42
我正在尝试创建一个简单的搜索工具,使用Flask,Jinja和SQLAlchemy搜索现有的Postgres表。一切正常,除了我搜索时,页面上显示的结果是这样的:请注意,如果我仅使用Postgres / pgadmin进行了相同的搜索,将会圈出我要圈出的位。它返回多个随机结果。以下是使用Pgadmin返回的内容:有任何想法吗?我的代码如下。应用程式from flask import Flask, render_template, requestfrom sqlalchemy import create_enginefrom sqlalchemy import textfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='xxx://xxx:xxx@xxx:xxx/xxx'engine = create_engine('postgresql+psycopg2://xxx:xxx@xxxr:xxx/xxx')app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb=SQLAlchemy(app)@app.route('/', methods=['GET', 'POST'])def homepage():    if request.method == 'POST':        jn = request.form['jobnumber']        rp = db.session.execute(text("SELECT cost FROM public.options where cast(optionno AS VARCHAR) like :jn"), {"jn": f"%{jn}%"})        result_set = rp.fetchall()        return render_template('main.html', result_set=result_set, jn=jn)    else:        return render_template('main.html')    if __name__ == "__main__":        app.run(debug=True)Main.html<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>xxx</title>    <meta name="viewport" content="width=device-width, initial-scale=1">    <link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">    <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"></head><body><p>xxx</p><form method="POST" id="jobnumber">    <input name="jobnumber" type="text"  placeholder="jobnumber"></form><table> <td><h1> Results</h1>       <p>{{result_set}}</p></td></table></body></html>如何获取仅显示与PGAdmin相同的内容?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您似乎%在flask中使用s进行搜索,而在pgAdmin中则没有它们。如果两者都需要相同的结果,请使用相同的查询。

将搜索字符串括起来%会向SQL引擎指示您要具有包含搜索字符串的值。不只是完全匹配。


查看完整回答
反对 回复 2021-04-27
  • 1 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信