抱歉,这几乎肯定是重复的,但我只是无法将信息放在一起。
如何从 influxDB 中删除一个点?
首先,我使用 Python 和 DataFrameClient
:
client = DataFrameClient('localhost', '8086', 'root', 'root', 'meteo')
然后我写下多个点,例如:
meta = pd.DataFrame({'path': ['A'],
'table': ['B'],
'md5': ['C']},
index=[pd.datetime.now()])
client.write_points(dataframe=meta,
measurement='__SRC__',
protocol='line',
database='meteo')
现在我想删除所有点,其中 path
是 'A'
。我尝试使用 client.query
:
DELETE FROM "meteo"."autogen"."__SRC__" WHERE path='A'
> received status code 400 from server: err: error parsing query:
> retention policy not supported at line 1, char 1
现在这条消息可能有意义,但是你能帮助我了解我做错了什么以及在哪里阅读它吗?非常感谢!
更新
根据@JanGaraj的回答,我得到了更多结果。以下查询(我有一个变量 table
而不是 path
但看不出这有何不同。)
client = influxdb.DataFrameClient('localhost', '8086', 'root', 'root', 'meteo')
client.query('DELETE FROM "__SRC__" WHERE table=\'A\'')
返回
ResultSet({})
但不会删除任何内容(使用 SELECT * FROM "__SRC__" WHERE table=\'A\'
我得到 4 个数据点)。
放入 Chronograf 中的相同查询( DELETE FROM "__SRC__" WHERE table='A'
)给出“数据库未找到:”,这是有道理的,但我不知道如何修复它。
最佳答案
首先,根据 DELETE
规范,您实际上无法删除单个点 - 您可以删除一系列中的所有点。
在实践中,在这种情况下,您可以认为标签构成一个系列(过于简单化,但在这里可行)。
标签是DELETE
用来定义受影响的系列的东西 - 而不是值!
换句话说,您可以在 WHERE
中指定 ONLY 标记。
现在,我从这个 Py 库 doc(-) 中得到的是,DataFrame
被视为一组值,NOT 标签。
这正是它不起作用的原因:您应该将您的 path
(很可能也是 table
,考虑这里的基数)放入标签(单独的调用中的参数),而不是值。
然后就可以了,但问题是 - 为什么您需要删除这些点? 你能回答这个问题吗?
-)这件事真的很恶心,我必须承认,不知道你们如何忍受它并且不立即逃向一些更人性化设计和文档化的库和语言
关于python - 如何删除 influxDB 中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53115162/