【问题标题】:Python influx query inserting dates into queryPython涌入查询将日期插入查询
【发布时间】:2019-12-03 10:51:31
【问题描述】:

当我运行以下语句来查询涌入时,我得到了错误:

InfluxDBClientError: 无效的时间戳字符串

date_from  = '2019-12-02 T00:00:00Z'
date_to = '2019-12-02T01:00:00Z'
"""SELECT "value" FROM "location/PRESSURE_SENSOR_1" WHERE time >= """ + '\'' + date_from + '\'' + """ and time <= '2019-12-02T01:00:00Z' """

如果我运行以下它可以正常工作:

client.query("""SELECT "value" FROM "location/PRESSURE_SENSOR_1" where time >= '2019-10-02 00:00:00' and time < '2019-10-03 00:00:00'"""))

目的是构建语句,我可以在其中插入变量,但我不能够做到这一点。任何帮助表示赞赏? 谢谢

【问题讨论】:

  • 只是为了搞笑和科学,尝试将单引号放在三引号内并去掉反斜杠,例如WHERE time &gt;='""" + date_from + """'
  • 另外:以防万一有人在更大且受控程度较低的环境中使用您的代码,请在连接字符串之前考虑进行某种数据清理。否则,我们就是在教孩子们一些不安全的习惯。 :) xkcd.com/327

标签: python influxdb


【解决方案1】:

你应该使用 api 中的 bind_params 来完成这个任务。

query = "SELECT value FROM 'location/PRESSURE_SENSOR_1' where time >= $start_time and time < $end_time"
bind_params = {'end_time': '2019-10-03 00:00:00', 'start_time': '2019-10-02 00:00:00'}
client.query(query, bind_params=bind_params))

在此处查找更多信息: Influx Client Documenation

【讨论】:

  • 当我运行它时,我得到“TypeError: query() got an unexpected keyword argument 'bind_params'”。为什么client.query不喜欢参数bind_params有什么想法吗?客户端对象使用这行代码“client = DataFrameClient(host, port, user, password, dbname)”
  • @resolver101 你可以在交互模式下运行help(client.query) 以确保我们讨论的是相同的方法
猜你喜欢
  • 2016-10-12
  • 1970-01-01
  • 2011-04-10
  • 2015-07-21
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
相关资源
最近更新 更多