Skip to content

Commit d2aa0af

Browse files
authored
feat: delete_api also accept datetime as a value for start and stop (influxdata#317)
1 parent 8539a9b commit d2aa0af

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
### Features
44
1. [#319](https://github.com/influxdata/influxdb-client-python/pull/319): Add supports for array expressions in query parameters
55
2. [#320](https://github.com/influxdata/influxdb-client-python/pull/320): Add JSONEncoder to encode query results to JSON
6+
1. [#317](https://github.com/influxdata/influxdb-client-python/pull/317): `delete_api` also accept `datetime` as a value for `start` and `stop`
67

78
### Bug Fixes
89
1. [#321](https://github.com/influxdata/influxdb-client-python/pull/321): Fixes return type for dashboard when `include=properties` is used

influxdb_client/client/delete_api.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
"""Delete time series data from InfluxDB."""
22

3-
import datetime
3+
from datetime import datetime
44

55
from influxdb_client import DeleteService, DeletePredicateRequest
6+
from influxdb_client.client.util.date_utils import get_date_helper
67

78

89
class DeleteApi(object):
@@ -24,5 +25,11 @@ def delete(self, start: datetime, stop: object, predicate: object, bucket: str,
2425
:param org: organization id or name
2526
:return:
2627
"""
28+
date_helper = get_date_helper()
29+
if isinstance(start, datetime):
30+
start = date_helper.to_utc(start)
31+
if isinstance(stop, datetime):
32+
stop = date_helper.to_utc(stop)
33+
2734
predicate_request = DeletePredicateRequest(start=start, stop=stop, predicate=predicate)
2835
return self._service.post_delete(delete_predicate_request=predicate_request, bucket=bucket, org=org)

tests/test_DeleteApi.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from datetime import datetime
2+
3+
from pytz import UTC
4+
15
from influxdb_client import PermissionResource, Permission, InfluxDBClient, Point
26
from influxdb_client.client.write_api import SYNCHRONOUS
37
from tests.base_test import BaseTest
@@ -11,7 +15,6 @@ def setUp(self) -> None:
1115

1216
for bucket in response.buckets:
1317
if bucket.name.endswith("_IT"):
14-
print("Delete bucket: ", bucket.name)
1518
self.buckets_api.delete_bucket(bucket)
1619

1720
self.bucket = self.create_test_bucket()
@@ -25,15 +28,14 @@ def setUp(self) -> None:
2528
permissions=[read_bucket, write_bucket])
2629
self.auth_token = authorization.token
2730
self.client.close()
28-
self.client = InfluxDBClient(url=self.host, token=self.auth_token, debug=True, org=self.org)
31+
self.client = InfluxDBClient(url=self.host, token=self.auth_token, org=self.org)
2932
self.delete_api = self.client.delete_api()
3033

3134
def test_delete_buckets(self):
3235

3336
self._write_data()
3437

3538
q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)'
36-
print(q)
3739
flux_tables = self.client.query_api().query(query=q, org=self.organization.id)
3840
self.assertEqual(len(flux_tables), 1)
3941
self.assertEqual(len(flux_tables[0].records), 12)
@@ -52,19 +54,30 @@ def test_delete_buckets_by_name(self):
5254
self._write_data()
5355

5456
q = f'from(bucket:\"{self.bucket.name}\") |> range(start: 1970-01-01T00:00:00.000000001Z)'
55-
print(q)
5657
flux_tables = self.client.query_api().query(query=q, org=self.organization.id)
5758
self.assertEqual(len(flux_tables), 1)
5859
self.assertEqual(len(flux_tables[0].records), 12)
5960

6061
start = "1970-01-01T00:00:00.000000001Z"
6162
stop = "1970-01-01T00:00:00.000000012Z"
63+
self._delete_and_verify(start, stop)
64+
65+
def test_start_stop_types(self):
66+
starts_stops = [
67+
("1970-01-01T00:00:00.000000001Z", "1970-01-01T00:00:00.000000012Z"),
68+
(datetime(1970, 1, 1, 0, 0, 0, 0, UTC), datetime(1970, 1, 1, 0, 0, 0, 1, UTC)),
69+
(datetime(1970, 1, 1, 0, 0, 0, 0), datetime(1970, 1, 1, 0, 0, 0, 1))
70+
]
71+
for start_stop in starts_stops:
72+
self._write_data()
73+
self._delete_and_verify(start_stop[0], start_stop[1])
74+
75+
def _delete_and_verify(self, start, stop):
6276
self.delete_api.delete(start, stop, "", bucket=self.bucket.name, org=self.organization.name)
63-
64-
flux_tables2 = self.client.query_api().query(
77+
flux_tables = self.client.query_api().query(
6578
f'from(bucket:"{self.bucket.name}") |> range(start: 1970-01-01T00:00:00.000000001Z)',
6679
org=self.organization.id)
67-
self.assertEqual(len(flux_tables2), 0)
80+
self.assertEqual(len(flux_tables), 0)
6881

6982
def _write_data(self):
7083

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy