bind_params = {'start_date': start_date, 'end_date': end_date}
q = "SELECT * FROM new_data WHERE time >= $start_date and time < $end_date"
data = pd.DataFrame(client.query(q, bind_params= bind_params).get_points())
Я запустил этот параметризованный запрос на своем скрипте python на моей машине windows, и он вернул фрейм данных, как и ожидалось.
Выполнение этого же скрипта запроса / python на Linux docker контейнер вернул ошибку: bind_params не является допустимым аргументом .
Итак, я попробовал это:
q = "SELECT * FROM new_data WHERE time >= $start_date and time < $end_date"
data = pd.DataFrame(client.query(q, params={"bind_params":json.dumps(bind_params)}).get_points())
Это вернуло сообщение об ошибке:
pd.DataFrame(client.query(q, params= bind_params).get_points())
File "/usr/local/lib/python3.8/site-packages/influxdb/client.py", line 445, in query
response = self.request(
File "/usr/local/lib/python3.8/site-packages/influxdb/client.py", line 302, in request
raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"error parsing query: missing parameter:
start_date"}
Итак, я попробовал этот код:
q = "SELECT * FROM data WHERE time >= " + start_date +" and time < " + end_date
data = pd.DataFrame(client.query(q).get_points())
Я не получаю никаких ошибок, но возвращается пустой фрейм данных. Я проверил наличие данных в моей базе данных effxdb и не могу просмотреть их с помощью оператора select.
Буду признателен, если кто-нибудь поможет мне в написании параметризованного запроса в influenxdb на основе параметра времени.