Я использую Python 3.6 с Flask.Я пытаюсь подключиться к базе данных Amazon Redshift с помощью SqlAlchemy.Запрос имеет операцию IN в предложении Where, и значения для него отправляются путем привязки его к запросу.Почему-то это не работает?Он не выдает ошибку, но не приносит никаких результатов.Если я жестко закодирую значения в запросе, он работает нормально.
Я испробовал несколько предложенных вариантов, но безуспешно - 1. связывание значений в виде списка или строки, разделенной запятыми 2. удаление скобок в запросе 3. изменение кода на stmt = text (file.read ()) stmt = stmt.bindparams (search = ids) df = pd.read_sql_query (stmt, connection)
dtv_script.txt
Select * from tbl1 where id IN (:search)
def get_dt(id_list):
engine = create_engine('postgresql://xxxxxxxxxx')
connection = engine.connect()
ids = list(id_list.split(","))
#dtv_script.txt has the sql
file = open('dtv_script.txt')
sql = text(file.read())
df = pd.read_sql_query(sql, connection, params={'search' : ids})
connection.close()
return df
Идентификаторы публикуются из формы в index.html.Образцы идентификаторов = 2011592,2021593,2033591.Страница маршрута фляги захватывает ее в функции get_dt () и возвращает фрейм данных обратно на страницу results.html для отображения
@app.route('/result', methods=['POST'])
def result():
if request.method == 'POST':
id_list = request.form.get('ids')
df_dt = dofri.get_dt(id_list)
return render_template('result.html', **locals())
else:
flash('There was some error. Check the logs')
return index()