python - 带有变量的烧瓶 postgres 动态查询字符串
问题描述
我正在尝试使用变量动态查询 PostgresSQL 表。例如,当用户输入 a 时name
,我希望用户被重定向到显示与之关联的表数据的页面name
(数据库表中name
在特定列中具有该数据的行)。我知道我已正确连接到 PostgresSQL 数据库。
在我的 Flask app.py文件中,我有:
@app.route("/test")
def hello():
html = render_template('test_index.html')
return html
@app.route("/results")
def goodbye():
x = request.args.get('stuff')
image=sql("SELECT * FROM image WHERE image_id = '%s'" % ({x}))
html = render_template('test_results.html', target=x, image=image)
return html
在我的test_index.html模板中,我有:
<h1>Hello</h1>
<form action="{{url_for('goodbye')}}" method="get">
<input type="text" name="stuff" value="type something!">
<input type="submit" value="Submit">
</form>
在我的test_results.html模板中,我有:
<h1>Image ID:</h1>
<h2>{{target}}</h2>
<table>
<tr>
<th>Image ID</th>
{% for images in image %}
<tr>
<td>{{ images.image_id }}</td>
</tr>
{% endfor %}
当我输入名称时,我收到此错误:
ProgrammingError: (psycopg2.ProgrammingError) 在“John” LINE 1 或附近出现语法错误:SELECT * FROM image WHERE image_id = 'set([u'John'...
有没有办法使这种通过字符串动态查询的方法成为可能?还是我以不正确的方式处理这个问题?(我是否必须声明一个模型并以这种方式处理它?)
解决方案
从文档:http ://docs.sqlalchemy.org/en/latest/orm/session_api.html
您的方法很准确,您的烧瓶应用程序中的 sql 语句中只有一个小问题。试试这个:
@app.route("/test")
def hello():
html = render_template('test_index.html')
return html
@app.route("/results")
def goodbye():
x = request.args.get('stuff')
image = sql("SELECT * FROM image WHERE image_id=:image_id_input;",
{"image_id_input": x})
html = render_template('test_results.html', target=x, image=image)
return html
我还假设您希望更新您的 sql 查询语句以仅选择您有兴趣显示的图像字段。当前图像将是一个列表列表,每个内部列表都是匹配行的列。
推荐阅读
- python - 当 run_eagerly = False 时,在 train_step() 中评估 Tensorflow 张量
- typescript - Nest 无法解析 JokesService (?) 的依赖关系
- next.js - getStaticPaths 空数组和回退的缺点是真的吗?
- pdf - Adobe PDF Embed API 将内容保存到 Base64
- azure-durable-functions - 使用 Azure Durable Function 时消耗计划超时
- python - Jupyter实验室重新定义函数的问题
- sql-server - Windows Defender 防火墙规则何时生效
- javascript - 每次执行调用 Edge/Chrome 调试器中的某个脚本文件时,如何使调试器中断?
- excel - 如何将四列中的函数填充到A列中的数据停止的位置?
- javascript - Safari 数字输入 stepUp/stepDown 无法使用空值