python - 如何删除 influxDB 中的点

标签 python influxdb

抱歉,这几乎肯定是重复的,但我只是无法将信息放在一起。

如何从 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/

相关文章:

python - 当另一个数据库插入一条记录时如何更新一个数据库?

linux - Docker容器无法从主机访问映射目录

mysql - influxDB 中的 AS 子句

python - 关系/时间序列数据库和非常大的 SELECT 查询

plugins - 如何向 Telegraf 添加插件?

python - 永久升级 Google Cloud Shell 中的 Python 运行时?

python - Python 中基于字典的压缩可单独压缩短字符串

java 纪元时间转换器

python - 生成落在多边形内的经纬度坐标网格

python - 如何使用字典将开始日期和结束日期翻译为一段时间,例如 jan-dec 是日历年