InfluxDB - Referencia de API

Operaciones avanzadas con InfluxDB incluyendo validación automática, escritura paralela, downsampling y backup.

Clase Principal

class ctrutils.database.influxdb.InfluxdbOperation(host=None, port=None, timeout=5, client=None, **kwargs)[fuente]

Bases: object

Clase para manejar la conexion y operaciones en una base de datos InfluxDB.

Esta clase proporciona una interfaz completa para interactuar con InfluxDB, incluyendo validacion avanzada de datos, limpieza de NaN, escritura por lotes de DataFrames grandes, y operaciones de administracion de base de datos.

Ejemplos:
>>> # Crear instancia con credenciales
>>> influx = InfluxdbOperation(
...     host='localhost',
...     port=8086,
...     username='admin',
...     password='password'
... )
>>> # O usar un cliente existente
>>> client = InfluxDBClient(host='localhost', port=8086)
>>> influx = InfluxdbOperation(client=client)
>>> # Escribir un DataFrame grande con validacion
>>> df = pd.DataFrame(...)
>>> influx.write_dataframe(
...     measurement='mi_medicion',
...     data=df,
...     database='mi_db',
...     batch_size=1000,
...     validate_data=True
... )
__init__(host=None, port=None, timeout=5, client=None, **kwargs)[fuente]

Inicializa la conexion y la clase InfluxdbOperation.

Parámetros:
  • host (str | None) – Direccion del servidor InfluxDB (requerido si client no se proporciona).

  • port (int | str | None) – Puerto del servidor InfluxDB (requerido si client no se proporciona).

  • timeout (int | float | None) – Tiempo de espera para las operaciones en segundos.

  • client (InfluxDBClient | None) – Cliente InfluxDBClient existente (opcional). Si se proporciona, se usara este cliente en lugar de crear uno nuevo.

  • **kwargs (Any) – Argumentos adicionales para InfluxDBClient (username, password, etc.).

Muestra:

ValueError – Si no se proporciona ni cliente ni host/port.

enable_logging(level=20, logger=None)[fuente]

Activa el logging para debugging y monitoreo.

Parámetros:
  • level (int) – Nivel de logging (logging.DEBUG, INFO, WARNING, ERROR).

  • logger (Logger | None) – Instancia de logger personalizado (opcional). Si se proporciona, se usa en lugar de crear uno nuevo.

Ejemplos:
>>> # Con logging estándar
>>> influx = InfluxdbOperation(host='localhost', port=8086)
>>> influx.enable_logging(logging.DEBUG)
>>> # Con LoggingHandler de ctrutils
>>> from ctrutils.handler import LoggingHandler
>>> handler = LoggingHandler()
>>> custom_logger = handler.add_handlers([
...     handler.create_stream_handler(),
...     handler.create_file_handler('influxdb.log')
... ])
>>> influx.enable_logging(logger=custom_logger)
get_metrics()[fuente]

Obtiene métricas de rendimiento de las operaciones.

Devuelve:

Diccionario con métricas de escritura.

Tipo del valor devuelto:

Dict[str, Any]

Ejemplos:
>>> metrics = influx.get_metrics()
>>> print(f"Total writes: {metrics['total_writes']}")
>>> print(f"Avg write time: {metrics['avg_write_time']:.2f}s")
reset_metrics()[fuente]

Reinicia las métricas de rendimiento.

transaction(database=None)[fuente]

Context manager para operaciones transaccionales.

Parámetros:

database (str | None) – Base de datos para la transacción.

Ejemplos:
>>> with influx.transaction('mi_db') as db:
...     influx.write_dataframe(measurement='datos', data=df)
...     influx.write_points(points=points)
property get_client_info: Dict[str, Any]

Obtiene informacion del cliente actual.

property get_client: InfluxDBClient

Obtiene el cliente actual InfluxDBClient.

close_client()[fuente]

Cierra la conexion actual del cliente InfluxDBClient.

Nota: Si el cliente fue proporcionado externamente, no se cerrara automaticamente para evitar efectos secundarios en otros componentes que lo usen.

switch_database(database)[fuente]

Cambia la base de datos activa en el cliente de InfluxDB.

get_data(query, database=None)[fuente]

Ejecuta una consulta en InfluxDB y devuelve los resultados en un DataFrame.

query_to_dataframe(measurement, fields=None, start_time=None, end_time=None, where_conditions=None, limit=None, database=None, convert_to_local_tz=False)[fuente]

Consulta datos de un measurement y devuelve un DataFrame.

Parámetros:
  • measurement (str) – Nombre del measurement.

  • fields (List[str] | None) – Lista de campos a consultar (None = todos).

  • start_time (str | None) – Tiempo de inicio (formato ISO8601 o string InfluxQL compatible).

  • end_time (str | None) – Tiempo de fin (formato ISO8601 o string InfluxQL compatible).

  • where_conditions (Dict[str, Any] | None) – Condiciones adicionales como dict {“tag”: “value”}.

  • limit (int | None) – Limitar numero de resultados.

  • database (str | None) – Base de datos (None = usa la actual).

  • convert_to_local_tz (bool) – Si True, convierte el indice a la timezone local.

Devuelve:

DataFrame con los datos consultados, indice es time en UTC.

Tipo del valor devuelto:

DataFrame

Ejemplos:
>>> # Leer ultimos 100 puntos
>>> df = influx.query_to_dataframe(
...     measurement='temperatura',
...     limit=100,
...     database='mi_db'
... )
>>>
>>> # Leer rango de tiempo especifico
>>> df = influx.query_to_dataframe(
...     measurement='temperatura',
...     start_time='2024-01-01T00:00:00Z',
...     end_time='2024-01-31T23:59:59Z',
...     database='mi_db'
... )
read_last_n_points(measurement, n=100, fields=None, database=None)[fuente]

Lee los ultimos N puntos de un measurement.

Parámetros:
  • measurement (str) – Nombre del measurement.

  • n (int) – Numero de puntos a leer.

  • fields (List[str] | None) – Lista de campos a leer (None = todos).

  • database (str | None) – Base de datos (None = usa la actual).

Devuelve:

DataFrame con los ultimos N puntos.

Tipo del valor devuelto:

DataFrame

Ejemplos:
>>> # Leer ultimos 50 puntos
>>> df = influx.read_last_n_points('temperatura', n=50)
read_time_range(measurement, start_time, end_time, fields=None, database=None)[fuente]

Lee datos de un rango de tiempo especifico.

Parámetros:
  • measurement (str) – Nombre del measurement.

  • start_time (str | datetime | Timestamp) – Tiempo de inicio (acepta string, datetime o Timestamp).

  • end_time (str | datetime | Timestamp) – Tiempo de fin (acepta string, datetime o Timestamp).

  • fields (List[str] | None) – Lista de campos a leer (None = todos).

  • database (str | None) – Base de datos (None = usa la actual).

Devuelve:

DataFrame con los datos del rango de tiempo.

Tipo del valor devuelto:

DataFrame

Ejemplos:
>>> # Usando strings
>>> df = influx.read_time_range(
...     measurement='temperatura',
...     start_time='2024-01-01T00:00:00Z',
...     end_time='2024-01-31T23:59:59Z'
... )
>>>
>>> # Usando datetime
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> df = influx.read_time_range(
...     measurement='temperatura',
...     start_time=now - timedelta(hours=24),
...     end_time=now
... )
get_measurements(database=None)[fuente]

Obtiene la lista de mediciones (measurements) en una base de datos.

Este método es un alias conveniente de list_measurements() que devuelve solo los nombres en lugar de objetos Result completos.

Parámetros:

database (str | None) – Nombre de la base de datos. Si es None, usa la base de datos por defecto configurada en el cliente.

Devuelve:

Lista de nombres de mediciones ordenadas alfabéticamente.

Devuelve lista vacía si no hay mediciones o si la base de datos no existe.

Tipo del valor devuelto:

List[str]

Muestra:

InfluxDBClientError – Si hay error de conexión o permisos insuficientes.

Ejemplos

>>> influx = InfluxdbOperation(host='localhost', port=8086)
>>> measurements = influx.get_measurements('mi_db')
>>> print(f"Encontradas {len(measurements)} mediciones")
>>> for m in measurements:
...     print(f"  - {m}")

Ver también

list_measurements: Método original que devuelve objetos Result. get_databases: Obtiene lista de bases de datos.

get_databases()[fuente]

Obtiene la lista de bases de datos disponibles en InfluxDB.

Este método es un alias conveniente de list_databases() para mantener consistencia de nomenclatura con get_measurements().

Devuelve:

Lista de nombres de bases de datos disponibles,

incluyendo bases de datos del sistema como “_internal”.

Tipo del valor devuelto:

List[str]

Muestra:

InfluxDBClientError – Si hay error de conexión al servidor.

Ejemplos

>>> influx = InfluxdbOperation(host='localhost', port=8086)
>>> databases = influx.get_databases()
>>> print("Bases de datos disponibles:")
>>> for db in databases:
...     print(f"  - {db}")
Bases de datos disponibles:
  - _internal
  - mi_db
  - produccion

Ver también

list_databases: Método original. get_measurements: Obtiene lista de mediciones en una BD.

normalize_value_to_write(value)[fuente]

Normaliza el valor para su escritura en InfluxDB.

Esta funcion valida y convierte valores para asegurar compatibilidad con InfluxDB.

Parámetros:

value (Any) – Valor a normalizar.

Devuelve:

Valor normalizado o None si no es valido.

Tipo del valor devuelto:

Any

write_points(points, database=None, tags=None, batch_size=5000, validate_data=True)[fuente]

Escribe una lista de puntos directamente en InfluxDB, asegurando que el timestamp este en UTC.

Parámetros:
  • points (list) – Lista de puntos a escribir. Cada punto debe ser un diccionario con las claves “measurement”, “time”, “fields” y opcionalmente “tags”.

  • database (str | None) – Nombre de la base de datos donde escribir (opcional si ya esta configurada).

  • tags (dict | None) – Tags adicionales para agregar a todos los puntos.

  • batch_size (int) – Tamaño del lote para escritura. Por defecto 5000.

  • validate_data (bool) – Si True, valida y limpia los puntos antes de escribir.

Devuelve:

{

“total_points”: int, “written_points”: int, “invalid_points”: int, “batches”: int

}

Tipo del valor devuelto:

Diccionario con estadisticas de escritura

Muestra:

ValueError – Si no se proporciona base de datos o la lista de puntos esta vacia.

write_dataframe(measurement=None, data=None, df=None, tags=None, database=None, batch_size=1000, validate_data=True, pass_to_float=True, convert_bool_to_float=False, suffix_bool_to_float='_bool_to_float', drop_na_rows=False, field_columns=None, tag_columns=None, convert_index_to_utc=True)[fuente]

Convierte un DataFrame en una lista de puntos y los escribe en InfluxDB, con validacion avanzada y limpieza de datos.

Este metodo maneja automaticamente: - Valores NaN, None, e infinitos - Conversion de tipos numpy a tipos nativos Python - Validacion de cada punto antes de escribir - Escritura por lotes para DataFrames grandes - Conversion de timestamps a UTC

Parámetros:
  • measurement (str | None) – Nombre de la medicion en InfluxDB.

  • data (DataFrame | None) – DataFrame con los datos a escribir. El indice debe ser DatetimeIndex (acepta tambien “df”).

  • df (DataFrame | None) – Alias para “data” (por compatibilidad).

  • tags (dict | None) – Tags adicionales para todos los puntos (opcional).

  • database (str | None) – Base de datos donde escribir (opcional si ya esta configurada).

  • batch_size (int) – Tamaño del lote para escritura. Por defecto 1000. Reducir si tiene problemas de memoria con DataFrames grandes.

  • validate_data (bool) – Si True, valida y limpia datos antes de escribir.

  • pass_to_float (bool) – Si True, convierte enteros a float para compatibilidad InfluxDB.

  • convert_bool_to_float (bool) – Si True, convierte columnas booleanas a float.

  • suffix_bool_to_float (str) – Sufijo para columnas booleanas convertidas.

  • drop_na_rows (bool) – Si True, elimina filas donde todos los valores son NaN.

  • field_columns (List[str] | None) – Lista de columnas a usar como fields (None = todas excepto tag_columns).

  • tag_columns (List[str] | None) – Lista de columnas a usar como tags adicionales.

  • convert_index_to_utc (bool) – Si True, convierte el indice a UTC antes de escribir.

Devuelve:

Diccionario con estadisticas de escritura.

Muestra:
  • ValueError – Si no se proporciona DataFrame o measurement.

  • TypeError – Si el indice del DataFrame no es DatetimeIndex.

Tipo del valor devuelto:

Dict[str, int]

Ejemplos:
>>> df = pd.DataFrame({
...     'temperatura': [20.5, np.nan, 21.0, 22.5],
...     'humedad': [45.0, 50.0, np.nan, 55.0]
... }, index=pd.date_range('2024-01-01', periods=4, freq='H'))
>>>
>>> stats = influx.write_dataframe(
...     measurement='clima',
...     data=df,
...     database='mi_db',
...     batch_size=1000,
...     validate_data=True
... )
>>> print(f"Escritos: {stats['written_points']}/{stats['total_points']}")
write_dataframe_parallel(df, measurement, tags=None, field_columns=None, tag_columns=None, batch_size=5000, max_workers=4, progress_callback=None, database=None)[fuente]

Escribe un DataFrame a InfluxDB usando procesamiento paralelo.

Parámetros:
  • df (DataFrame) – DataFrame con datos a escribir

  • measurement (str) – Nombre de la medicion

  • tags (Dict[str, str] | None) – Tags adicionales a agregar a todos los puntos

  • field_columns (List[str] | None) – Columnas a usar como fields (None = todas las numericas)

  • tag_columns (List[str] | None) – Columnas a usar como tags

  • batch_size (int) – Tamaño de cada batch

  • max_workers (int) – Numero maximo de threads para procesamiento paralelo

  • progress_callback (Callable[[int, int], None] | None) – Funcion opcional(processed, total) para reportar progreso

  • database (str | None) – Nombre de la base de datos (None = usa la actual)

Devuelve:

Diccionario con estadisticas de la operacion

Tipo del valor devuelto:

Dict[str, Any]

downsample_data(measurement, target_measurement, aggregation_window, aggregation_func='MEAN', fields=None, start_time=None, end_time=None, database=None)[fuente]

Crea una version downsampled de los datos.

Parámetros:
  • measurement (str) – Measurement de origen

  • target_measurement (str) – Measurement de destino

  • aggregation_window (str) – Ventana de agregacion (ej: “1h”, “1d”)

  • aggregation_func (str) – Funcion de agregacion (MEAN, SUM, MAX, MIN, COUNT)

  • fields (List[str] | None) – Campos a agregar (None = todos)

  • start_time (str | None) – Tiempo de inicio (formato RFC3339)

  • end_time (str | None) – Tiempo de fin (formato RFC3339)

  • database (str | None) – Base de datos (None = usa la actual)

Devuelve:

Numero de puntos creados

Tipo del valor devuelto:

int

create_continuous_query(cq_name, measurement, target_measurement, aggregation_window, aggregation_func='MEAN', fields=None, database=None)[fuente]

Crea una continuous query para downsampling automatico.

Parámetros:
  • cq_name (str) – Nombre de la continuous query

  • measurement (str) – Measurement de origen

  • target_measurement (str) – Measurement de destino

  • aggregation_window (str) – Ventana de agregacion

  • aggregation_func (str) – Funcion de agregacion

  • fields (List[str] | None) – Campos a agregar

  • database (str | None) – Base de datos

list_continuous_queries(database=None)[fuente]

Lista todas las continuous queries.

Devuelve:

Lista de diccionarios con informacion de las CQs

Tipo del valor devuelto:

List[Dict[str, Any]]

drop_continuous_query(cq_name, database=None)[fuente]

Elimina una continuous query.

Parámetros:
  • cq_name (str) – Nombre de la CQ a eliminar

  • database (str | None) – Base de datos

backup_measurement(measurement, output_file, start_time=None, end_time=None, database=None)[fuente]

Exporta un measurement a archivo CSV.

Parámetros:
  • measurement (str) – Nombre del measurement

  • output_file (str) – Ruta del archivo CSV de salida

  • start_time (str | None) – Tiempo de inicio (opcional)

  • end_time (str | None) – Tiempo de fin (opcional)

  • database (str | None) – Base de datos (None = usa la actual)

Devuelve:

Numero de puntos exportados

Tipo del valor devuelto:

int

restore_measurement(measurement, input_file, tags=None, batch_size=5000, database=None)[fuente]

Restaura un measurement desde archivo CSV.

Parámetros:
  • measurement (str) – Nombre del measurement de destino

  • input_file (str) – Ruta del archivo CSV

  • tags (Dict[str, str] | None) – Tags adicionales

  • batch_size (int) – Tamaño de batch para escritura

  • database (str | None) – Base de datos de destino

Devuelve:

Estadisticas de la operacion

Tipo del valor devuelto:

Dict[str, Any]

calculate_data_quality_metrics(measurement, fields=None, start_time=None, end_time=None, database=None)[fuente]

Calcula metricas de calidad de datos para un measurement.

Parámetros:
  • measurement (str) – Nombre del measurement

  • fields (List[str] | None) – Campos a analizar (None = todos)

  • start_time (str | None) – Tiempo de inicio

  • end_time (str | None) – Tiempo de fin

  • database (str | None) – Base de datos

Devuelve:

Diccionario con metricas por campo

Tipo del valor devuelto:

Dict[str, Dict[str, Any]]

query_builder(measurement, fields=None, where_conditions=None, group_by=None, order_by='time DESC', limit=None, database=None)[fuente]

Constructor de queries InfluxQL avanzado.

Parámetros:
  • measurement (str) – Nombre del measurement

  • fields (List[str] | None) – Campos a seleccionar (None = todos)

  • where_conditions (Dict[str, Any] | None) – Condiciones WHERE como diccionario

  • group_by (List[str] | None) – Campos para agrupar

  • order_by (str) – Orden de resultados

  • limit (int | None) – Limite de resultados

  • database (str | None) – Base de datos

Devuelve:

Query InfluxQL como string

Tipo del valor devuelto:

str

execute_query_builder(measurement, fields=None, where_conditions=None, group_by=None, order_by='time DESC', limit=None, as_dataframe=True, database=None)[fuente]

Construye y ejecuta una query.

Parámetros:
  • measurement (str) – Nombre del measurement

  • fields (List[str] | None) – Campos a seleccionar

  • where_conditions (Dict[str, Any] | None) – Condiciones WHERE

  • group_by (List[str] | None) – Campos para agrupar

  • order_by (str) – Orden de resultados

  • limit (int | None) – Limite de resultados

  • as_dataframe (bool) – Si retornar como DataFrame

  • database (str | None) – Base de datos

Devuelve:

DataFrame o resultado de query

Tipo del valor devuelto:

DataFrame | Any

delete(measurement, start_time=None, end_time=None, filters=None, database=None)[fuente]

Elimina datos de una medición en InfluxDB.

Permite eliminar datos con filtros por rango de tiempo y/o tags específicos. PRECAUCIÓN: Esta operación es irreversible.

Parámetros:
  • measurement (str) – Nombre de la medición de donde eliminar datos.

  • start_time (str | Timestamp | None) – Tiempo de inicio para el rango de eliminación (opcional). Acepta string ISO8601 o pd.Timestamp.

  • end_time (str | Timestamp | None) – Tiempo de fin para el rango de eliminación (opcional). Acepta string ISO8601 o pd.Timestamp.

  • filters (Dict[str, str] | None) – Diccionario de filtros adicionales por tags {tag: valor}.

  • database (str | None) – Base de datos donde ejecutar el DELETE. Si es None, usa la BD actual.

Devuelve:

La operación no devuelve valor.

Tipo del valor devuelto:

None

Muestra:
  • ValueError – Si no se proporciona database y no hay BD configurada.

  • InfluxDBClientError – Si hay error ejecutando la operación.

Advertencia

Esta operación elimina datos permanentemente y no se puede deshacer. Considera hacer un backup antes de eliminar datos importantes.

Ejemplos

Eliminar todos los datos de una medición:

>>> influx.delete(measurement='temperatura_antigua', database='mi_db')

Eliminar datos de un rango de tiempo:

>>> influx.delete(
...     measurement='sensores',
...     start_time='2024-01-01T00:00:00Z',
...     end_time='2024-01-31T23:59:59Z',
...     database='mi_db'
... )

Eliminar datos con filtro por tag:

>>> influx.delete(
...     measurement='sensores',
...     filters={'sensor_id': 'sensor_001'},
...     database='mi_db'
... )

Ver también

drop_measurement: Elimina la medición completa incluyendo esquema. backup_measurement: Crea backup antes de eliminar.

get_field_keys_grouped_by_type(measurement)[fuente]

Obtiene las claves de fields de un measurement, agrupadas por tipo de dato.

Este método es útil para construir queries dinámicas que necesitan aplicar diferentes operaciones según el tipo de dato del field.

Parámetros:

measurement (str) – Nombre del measurement a consultar.

Devuelve:

Diccionario donde las claves son los tipos de datos

(“float”, “integer”, “string”, “boolean”) y los valores son listas de nombres de fields con ese tipo.

Tipo del valor devuelto:

Dict[str, List[str]]

Muestra:

InfluxDBClientError – Si el measurement no existe o hay error de conexión.

Ejemplos

>>> fields_by_type = influx.get_field_keys_grouped_by_type('sensores')
>>> print(fields_by_type)
{
    'float': ['temperatura', 'humedad', 'presion'],
    'integer': ['contador', 'nivel'],
    'string': ['estado', 'ubicacion'],
    'boolean': ['activo', 'alarma']
}
>>>
>>> # Usar para construir queries diferentes por tipo
>>> float_fields = fields_by_type.get('float', [])
>>> for field in float_fields:
...     print(f"SELECT MEAN({field}) FROM sensores")

Ver también

list_fields: Obtiene lista simple de fields sin agrupar por tipo. build_query_fields: Construye parte de query aplicando operaciones por tipo.

build_query_fields(fields, operation)[fuente]

Construye una parte de la consulta de InfluxDB aplicando una operación a cada campo.

Este método helper facilita la construcción de queries complejas que aplican operaciones agregadas (MEAN, MAX, MIN, etc.) a múltiples fields, respetando los tipos de datos para evitar errores.

Parámetros:
  • fields (List[str] | Dict[str, List[str]]) – Lista de nombres de fields O diccionario con fields agrupados por tipo (como el retornado por get_field_keys_grouped_by_type()).

  • operation (str) – Operación de InfluxDB a aplicar (“MEAN”, “MAX”, “MIN”, “SUM”, “COUNT”, “FIRST”, “LAST”, etc.).

Devuelve:

Diccionario con las partes construidas de la query.

Si fields es List, retorna {“fields”: “MEAN(«temp») AS «temp», …”}. Si fields es Dict, retorna {tipo: query_string} para cada tipo.

Tipo del valor devuelto:

Dict[str, str]

Ejemplos

Con lista simple de fields:

>>> fields = ['temperatura', 'humedad', 'presion']
>>> query_parts = influx.build_query_fields(fields, 'MEAN')
>>> print(query_parts['fields'])
MEAN("temperatura") AS "temperatura", MEAN("humedad") AS "humedad", MEAN("presion") AS "presion"

Con fields agrupados por tipo (no aplica operación a boolean/integer):

>>> fields_by_type = {
...     'float': ['temperatura', 'humedad'],
...     'integer': ['contador'],
...     'boolean': ['activo']
... }
>>> query_parts = influx.build_query_fields(fields_by_type, 'MEAN')
>>> print(query_parts['float'])
MEAN("temperatura") AS "temperatura", MEAN("humedad") AS "humedad"
>>> print(query_parts['integer'])
"contador"
>>> print(query_parts['boolean'])
"activo"

Uso en query completa:

>>> fields = influx.get_field_keys_grouped_by_type('sensores')
>>> query_parts = influx.build_query_fields(fields, 'MEAN')
>>> select_clause = ', '.join(query_parts.values())
>>> query = f"SELECT {select_clause} FROM sensores WHERE time > now() - 1h"

Ver también

get_field_keys_grouped_by_type: Obtiene fields agrupados por tipo. query_builder: Constructor de queries más completo.

list_databases()[fuente]

Lista todas las bases de datos disponibles en InfluxDB.

Devuelve:

Lista con los nombres de las bases de datos.

Tipo del valor devuelto:

List[str]

Ejemplos:
>>> influx = InfluxdbOperation(host='localhost', port=8086)
>>> databases = influx.list_databases()
>>> print(databases)
['_internal', 'mi_db', 'otra_db']
database_exists(database)[fuente]

Verifica si una base de datos existe.

Parámetros:

database (str) – Nombre de la base de datos a verificar.

Devuelve:

True si la base de datos existe, False en caso contrario.

Tipo del valor devuelto:

bool

create_database(database)[fuente]

Crea una nueva base de datos en InfluxDB.

Parámetros:

database (str) – Nombre de la base de datos a crear.

Ejemplos:
>>> influx.create_database('nueva_db')
drop_database(database, confirm=False)[fuente]

Elimina una base de datos de InfluxDB.

Parámetros:
  • database (str) – Nombre de la base de datos a eliminar.

  • confirm (bool) – Debe ser True para confirmar la eliminacion (seguridad).

Muestra:

ValueError – Si confirm no es True.

Ejemplos:
>>> influx.drop_database('vieja_db', confirm=True)
list_measurements(database=None)[fuente]

Lista todas las mediciones en una base de datos.

Parámetros:

database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Lista con los nombres de las mediciones.

Tipo del valor devuelto:

List[str]

Ejemplos:
>>> measurements = influx.list_measurements('mi_db')
>>> print(measurements)
['temperatura', 'humedad', 'presion']
measurement_exists(measurement, database=None)[fuente]

Verifica si una medicion existe en la base de datos.

Parámetros:
  • measurement (str) – Nombre de la medicion a verificar.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

True si la medicion existe, False en caso contrario.

Tipo del valor devuelto:

bool

drop_measurement(measurement, database=None, confirm=False)[fuente]

Elimina una medicion (y todos sus datos) de la base de datos.

Parámetros:
  • measurement (str) – Nombre de la medicion a eliminar.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

  • confirm (bool) – Debe ser True para confirmar la eliminacion (seguridad).

Muestra:

ValueError – Si confirm no es True.

Ejemplos:
>>> influx.drop_measurement('vieja_medicion', confirm=True)
list_tags(measurement, database=None)[fuente]

Lista todos los tags de una medicion.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Lista con los nombres de los tags.

Tipo del valor devuelto:

List[str]

Ejemplos:
>>> tags = influx.list_tags('temperatura', 'mi_db')
>>> print(tags)
['sensor_id', 'location', 'type']
list_tag_values(measurement, tag_key, database=None)[fuente]

Lista todos los valores de un tag especifico en una medicion.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • tag_key (str) – Nombre del tag.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Lista con los valores del tag.

Tipo del valor devuelto:

List[str]

Ejemplos:
>>> values = influx.list_tag_values('temperatura', 'location', 'mi_db')
>>> print(values)
['salon', 'cocina', 'dormitorio']
list_fields(measurement, database=None)[fuente]

Lista todos los campos de una medicion con sus tipos.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Diccionario con nombres de campos como claves y tipos como valores.

Tipo del valor devuelto:

Dict[str, str]

Ejemplos:
>>> fields = influx.list_fields('temperatura', 'mi_db')
>>> print(fields)
{'temperatura': 'float', 'humedad': 'float', 'activo': 'boolean'}
get_measurement_cardinality(measurement, database=None)[fuente]

Obtiene la cardinalidad (numero de series unicas) de una medicion.

La cardinalidad es el numero de combinaciones unicas de tags en una medicion. Una cardinalidad alta puede afectar el rendimiento.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Numero de series unicas en la medicion.

Tipo del valor devuelto:

int

Ejemplos:
>>> cardinality = influx.get_measurement_cardinality('temperatura', 'mi_db')
>>> print(f"Series unicas: {cardinality}")
get_retention_policies(database=None)[fuente]

Lista las politicas de retencion de una base de datos.

Parámetros:

database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

Lista de diccionarios con informacion de las politicas de retencion.

Tipo del valor devuelto:

List[Dict[str, Any]]

Ejemplos:
>>> policies = influx.get_retention_policies('mi_db')
>>> for policy in policies:
...     print(f"{policy['name']}: {policy['duration']}")
count_points(measurement, database=None, start_time=None, end_time=None)[fuente]

Cuenta el numero de puntos en una medicion.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

  • start_time (str | None) – Tiempo de inicio para el conteo (opcional).

  • end_time (str | None) – Tiempo de fin para el conteo (opcional).

Devuelve:

Numero de puntos en la medicion.

Tipo del valor devuelto:

int

Ejemplos:
>>> # Contar todos los puntos
>>> total = influx.count_points('temperatura', 'mi_db')
>>> print(f"Total de puntos: {total}")
>>>
>>> # Contar puntos en un rango de tiempo
>>> total = influx.count_points(
...     'temperatura',
...     'mi_db',
...     start_time='2024-01-01T00:00:00Z',
...     end_time='2024-01-31T23:59:59Z'
... )
get_database_info(database=None)[fuente]

Obtiene informacion completa sobre una base de datos.

Parámetros:

database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

  • name: Nombre de la base de datos

  • measurements: Lista de mediciones

  • retention_policies: Politicas de retencion

Tipo del valor devuelto:

Diccionario con informacion de la base de datos

Ejemplos:
>>> info = influx.get_database_info('mi_db')
>>> print(f"Base de datos: {info['name']}")
>>> print(f"Mediciones: {len(info['measurements'])}")
>>> for measurement in info['measurements']:
...     print(f"  - {measurement}")
get_measurement_info(measurement, database=None)[fuente]

Obtiene informacion completa sobre una medicion.

Parámetros:
  • measurement (str) – Nombre de la medicion.

  • database (str | None) – Nombre de la base de datos (opcional si ya esta configurada).

Devuelve:

  • name: Nombre de la medicion

  • tags: Lista de tags

  • fields: Diccionario de campos con sus tipos

  • cardinality: Numero de series unicas

  • point_count: Numero total de puntos

Tipo del valor devuelto:

Diccionario con informacion de la medicion

Ejemplos:
>>> info = influx.get_measurement_info('temperatura', 'mi_db')
>>> print(f"Medicion: {info['name']}")
>>> print(f"Tags: {info['tags']}")
>>> print(f"Campos: {info['fields']}")
>>> print(f"Total puntos: {info['point_count']}")