diff --git a/.gitignore b/.gitignore index 7720b658..49d681f6 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ docs/build/ .coverage cover env +.vscode \ No newline at end of file diff --git a/influxdb/_dataframe_client.py b/influxdb/_dataframe_client.py index d16e29ca..2db0cc10 100644 --- a/influxdb/_dataframe_client.py +++ b/influxdb/_dataframe_client.py @@ -72,6 +72,11 @@ def write_points(self, datatypes. Defaults to None, which preserves 14-15 significant figures for float and all significant figures for int datatypes. """ + # Check measurement fields types in database and convert if it is possible + measurement_type = self._get_measurement_type(measurement) + # Convert data to measurement type in database + dataframe = dataframe.astype(measurement_type) + if tag_columns is None: tag_columns = [] @@ -467,3 +472,31 @@ def _datetime_to_epoch(self, datetime, time_precision='s'): return seconds * 1e6 elif time_precision == 'n': return seconds * 1e9 + + def _get_measurement_type(self, measurement, database=None): + """ Get measurement type from database measurements if exists. Else, None. """ + query = 'SHOW FIELD KEYS ON "%s" FROM "%s"' % (database, measurement) + + field_list = list(self.query(query)) + + if len(field_list) > 0: + types_dict = {} + for row in field_list[0]: + # Convert string data type into type + if row['fieldType'] == 'float': + datatype = float + elif row['fieldType'] == 'integer': + datatype = int + elif row['fieldType'] == 'boolean': + datatype = bool + elif row['fieldType'] == 'string': + datatype = str + elif row['fieldType'] == 'timestamp': + datatype = pd.Timestamp + else: + raise KeyError('InfluxDB type "%s" is unknown.' % row['fieldType']) + + types_dict[row['fieldKey']] = datatype + return types_dict + else: + return None \ No newline at end of file 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