@@ -32,6 +32,7 @@ def write_points(self, data, *args, **kwargs):
32
32
"""
33
33
34
34
batch_size = kwargs .get ('batch_size' )
35
+ time_precision = kwargs .get ('time_precision' , 's' )
35
36
if batch_size :
36
37
kwargs .pop ('batch_size' ) # don't hand over to InfluxDBClient
37
38
for key , data_frame in data .items ():
@@ -42,14 +43,15 @@ def write_points(self, data, *args, **kwargs):
42
43
end_index = (batch + 1 ) * batch_size
43
44
data = [self ._convert_dataframe_to_json (
44
45
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 )]
46
48
InfluxDBClient .write_points_with_precision (self , data ,
47
49
* args , ** kwargs )
48
50
return True
49
51
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 ()]
53
55
return InfluxDBClient .write_points_with_precision (self , data ,
54
56
* args , ** kwargs )
55
57
@@ -105,7 +107,7 @@ def _to_dataframe(self, json_result, time_precision):
105
107
del dataframe ['time' ]
106
108
return dataframe
107
109
108
- def _convert_dataframe_to_json (self , dataframe , name ):
110
+ def _convert_dataframe_to_json (self , dataframe , name , time_precision = 's' ):
109
111
try :
110
112
import pandas as pd
111
113
except ImportError :
@@ -120,12 +122,18 @@ def _convert_dataframe_to_json(self, dataframe, name):
120
122
dataframe .index = dataframe .index .to_datetime ()
121
123
if dataframe .index .tzinfo is None :
122
124
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 )
124
126
for dt in dataframe .index ]
125
127
data = {'name' : name ,
126
128
'columns' : [str (column ) for column in dataframe .columns ],
127
129
'points' : list ([list (x ) for x in dataframe .values ])}
128
130
return data
129
131
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