我正在尝试使用Python在InfluxDB数据库中搜索与特定坐标紧密匹配的数据。我已将所有坐标从纬度/经度转换为plus codes(即9C4WXRRQ + 69)。为了在InfluxDB中搜索类似的代码,我需要使用RegEx,这要求我使用反斜杠转义'+'字符。
当我从Python发送查询时,它会添加第二个反斜杠(我知道Python用于显示单个反斜杠),然后导致查询失败。是否有任何方法可以仅使用一个反斜杠从Python发送字符串查询,还是我应该坚持使用“ fudging it”方法从代码中删除所有“ +”号,从而消除需求?
我已经尝试了以下问题中提到的方法,以及其他多个方法,但是都发送了双反斜杠。
Why can't Python's raw string literals end with a single backslash?
How to replace a double backslash with a single backslash in python?
在Influx CMD中,我可以使用以下代码:
SELECT count(olc) FROM OLC WHERE olc =~ /9C4WXRRQ\+69*/
哪个返回:
name: OLC
time count
---- -----
0 1104
但是,如果我从Python发送相同的查询:
influx.query("SELECT count(olc) FROM OLC WHERE olc =~ /9C4WXRRQ\+69*/")
InfluxDB读数给出以下内容(显示双反斜杠)并返回空白响应:
2019-01-17T14:20:28.849772Z info Executing query {"log_id": "0C~7QHG0000", "service": "query", "query": "SELECT count(olc) FROM olctest.autogen.OLC WHERE olc =~ /9C4WXRRQ\\+69*/"}
如果我从加号中删除所有“ +”号,则查询工作正常:
influx.query("SELECT count(olc) FROM OLC WHERE olc =~ /9C4WXRRQ69*/")
结果:
ResultSet({'('OLC', None)': [{'time': '1970-01-01T00:00:00Z', 'count': 1104}]})
哪个显示从Python查询不是问题。
答案 0 :(得分:0)
您必须在请求中使用两个backslah ** \\ **。一个反斜杠被认为是python中的特殊字符