Я пытаюсь динамически запрашивать таблицу PostgresSQL с переменной. Например, когда пользователь вводит 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) в «или около» Джона
ЛИНИЯ 1: ВЫБРАТЬ * ИЗ ИЗОБРАЖЕНИЯ, ГДЕ image_id = 'set ([u'John' ...
Есть ли способ сделать этот метод динамического запроса по строке возможным?
Или я некорректно подхожу к этой проблеме? (Должен ли я объявить модель и подойти к ней таким образом?)