Параметризованный запрос InfluxDB не работает в linux docker - PullRequest
0 голосов
/ 16 марта 2020
    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 на основе параметра времени.

...