如何仅使用单个反斜杠将字符串查询发送到数据库?

时间:2019-01-17 14:49:23

标签: python regex influxdb

我正在尝试使用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查询不是问题。

1 个答案:

答案 0 :(得分:0)

您必须在请求中使用两个backslah ** \\ **。一个反斜杠被认为是python中的特殊字符