【问题标题】:Struggling with SQL line与 SQL 线作斗争
【发布时间】:2018-06-12 00:32:54
【问题描述】:

我正在为类似 SQL 的行苦苦挣扎,我只是不知道如何解决它。

query = "SELECT P_askbid_midprice1, Label1 FROM 'DCIX_OB' WHERE time >= '2018-02-16T09:00:00Z' and time <= '2018-02-16T16:00:00' "

上一行出现以下错误:

Traceback (most recent call last):
  File "graph_influxdb.py", line 53, in <module>
    read_data(length='5min')
  File "graph_influxdb.py", line 29, in read_data
    result = client.query(query)
  File "/usr/local/lib/python3.6/dist-packages/influxdb/client.py", line 394, in query
    expected_response_code=expected_response_code
  File "/usr/local/lib/python3.6/dist-packages/influxdb/client.py", line 271, in request
    raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"error parsing query: found DCIX_OB, expected identifier at line 1, char 39"}

我该如何解决这个问题?

【问题讨论】:

    标签: mysql influxdb influxdb-python


    【解决方案1】:

    Single quote string values (for example, tag values) but do not single quote identifiers (database names, retention policy names, user names, measurement names, tag keys, and field keys).

    如果它们以数字开头,包含 [A-z,0-9,_] 以外的字符,或者它们是 InfluxQL 关键字,则使用双引号标识符。如果标识符不属于这些类别之一,则不需要双引号,但我们还是建议使用双引号。

    即使用FROM "DCIX_OB"FROM DCIX_OB 也是合法的,但不推荐)。

    【讨论】:

    • 今天,没有双引号的标识符是合法的(尽管不推荐)这一事实似乎仍然是一个有效的声明,因为在线手册仍然这么说。然而,这条线在idbc.query("SELECT value FROM SCADA WHERE \"section\" = 'LILJEN' AND \"name\" = 'PM01PY'") 有效,而这条线在idbc.query("SELECT value FROM SCADA WHERE section = 'LILJEN' AND name = 'PM01PY'") 无效。你能解释一下为什么吗?
    • @Alkhwarizmi 因为name 属于“或者如果它们是 InfluxQL 关键字”,所以它必须被引用。见github.com/influxdata/influxql/blob/master/README.md#keywords
    • 谢谢@Alexey,我不知道
    猜你喜欢
    • 2019-04-20
    • 2014-10-29
    • 1970-01-01
    • 2021-03-20
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多