簡體   English   中英

如何將字符串查詢發送到只有一個反斜杠的數據庫?

[英]How to send a string query to a database with only a single backslash?

我正在嘗試使用 Python 在 InfluxDB 數據庫中搜索與特定坐標密切匹配的數據。 我已將所有坐標從緯度/經度轉換為加號(即 9C4WXRRQ+69)。 為了在 InfluxDB 中搜索類似的代碼,我需要使用 RegEx,這要求我使用反斜杠轉義“+”字符。

當我從 Python 發送查詢時,它會添加第二個反斜杠(我知道 Python 使用它來顯示單個反斜杠),然后導致查詢失敗。 有什么方法可以只用一個反斜杠從 Python 發送字符串查詢,還是應該堅持“捏造”方法從我的代碼中刪除所有 '+' 符號,從而否定需要?

我已經嘗試了以下問題中提到的方法以及其他多個方法,但都發送了雙反斜杠。

為什么 Python 的原始字符串文字不能以單個反斜杠結尾?

如何在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 查詢不是問題。

您必須在請求中使用兩個反斜杠 \\\\。 一個反斜杠被認為是python中的一個特殊字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM