Skip to content

Commit cd6d263

Browse files
committed
Add time_precision option to datetime_to_epoch.
1 parent cd28c36 commit cd6d263

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

influxdb/misc.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ def write_points(self, data, *args, **kwargs):
3232
"""
3333

3434
batch_size = kwargs.get('batch_size')
35+
time_precision = kwargs.get('time_precision', 's')
3536
if batch_size:
3637
kwargs.pop('batch_size') # don't hand over to InfluxDBClient
3738
for key, data_frame in data.items():
@@ -42,14 +43,15 @@ def write_points(self, data, *args, **kwargs):
4243
end_index = (batch + 1) * batch_size
4344
data = [self._convert_dataframe_to_json(
4445
name=key,
45-
dataframe=data_frame.ix[start_index:end_index].copy())]
46+
dataframe=data_frame.ix[start_index:end_index].copy(),
47+
time_precision=time_precision)]
4648
InfluxDBClient.write_points_with_precision(self, data,
4749
*args, **kwargs)
4850
return True
4951
else:
50-
data = [self._convert_dataframe_to_json(name=key,
51-
dataframe=dataframe)
52-
for key, dataframe in data.items()]
52+
data = [self._convert_dataframe_to_json(
53+
name=key, dataframe=dataframe, time_precision=time_precision)
54+
for key, dataframe in data.items()]
5355
return InfluxDBClient.write_points_with_precision(self, data,
5456
*args, **kwargs)
5557

@@ -105,7 +107,7 @@ def _to_dataframe(self, json_result, time_precision):
105107
del dataframe['time']
106108
return dataframe
107109

108-
def _convert_dataframe_to_json(self, dataframe, name):
110+
def _convert_dataframe_to_json(self, dataframe, name, time_precision='s'):
109111
try:
110112
import pandas as pd
111113
except ImportError:
@@ -120,12 +122,18 @@ def _convert_dataframe_to_json(self, dataframe, name):
120122
dataframe.index = dataframe.index.to_datetime()
121123
if dataframe.index.tzinfo is None:
122124
dataframe.index = dataframe.index.tz_localize('UTC')
123-
dataframe['time'] = [self._datetime_to_epoch(dt)
125+
dataframe['time'] = [self._datetime_to_epoch(dt, time_precision)
124126
for dt in dataframe.index]
125127
data = {'name': name,
126128
'columns': [str(column) for column in dataframe.columns],
127129
'points': list([list(x) for x in dataframe.values])}
128130
return data
129131

130-
def _datetime_to_epoch(self, datetime):
131-
return (datetime - DataFrameClient.EPOCH).total_seconds()
132+
def _datetime_to_epoch(self, datetime, time_precision='s'):
133+
seconds = (datetime - DataFrameClient.EPOCH).total_seconds()
134+
if time_precision == 's':
135+
return seconds
136+
elif time_precision == 'm':
137+
return seconds * 1000
138+
elif time_precision == 'u':
139+
return seconds * 1000000

0 commit comments

Comments
 (0)