### Navigation

- index
- modules |
- suivant |
- précédent |
- documentation pywws 13.09_r1069 »
- Programmes et des modules Python »

# pywws.DataStore

DataStore.py - enregistre les lectures dans des fichiers facilement accessibles

## Introduction

Ce module est au cœur de mon logiciel de station météo. Il stocke les données sur disque, mais sans le coût d’un système de base de données à grande échelle. Je l’ai conçu pour fonctionner sur une machine avec peu de mémoire comme mon routeur Asus. Pour minimiser l’utilisation de la mémoire, il ne charge que l’équivalent d’une journée de données à la fois dans la mémoire.

D’un point de vue “utilisateur”, les données sont accédées comme un croisement entre une liste et un dictionnaire. Chaque enregistrement de données est indexée par un objet `datetime.datetime` (comportement dictionnaire), mais les enregistrements sont stockés dans l’ordre et peut être consulté sous forme de tranches (comportement liste).

Par exemple, pour accéder aux données horaires pour le jour de Noël 2009, on peut faire ce qui suit

    from datetime import datetime
    import DataStore
    hourly = DataStore.hourly_store('weather_data')
    for data in hourly[datetime(2009, 12, 25):datetime(2009, 12, 26)]:
        print data['idx'], data['temp_out']

D’autres exemples d’accès aux données:

    # get value nearest 9:30 on Christmas day 2008
    data[data.nearest(datetime(2008, 12, 25, 9, 30))]
    # get entire array, equivalent to data[:]
    data[datetime.min:datetime.max]
    # get last 12 hours worth of data
    data[datetime.utcnow() - timedelta(hours=12):]

Le module fournit cinq classes pour stocker des données différentes. `data_store` prend les données “brutes” de la station météo; `calib_store`, `hourly_store`, `daily_store` et `monthly_store` stockent les données traitées (voir `pywws.Process`). Les trois sont dérivés de la même classe `core_store`, ils ne diffèrent que par les clés et les types de données stockées dans chaque enregistrement.

## API détaillé

Fonctions

`safestrptime`(date_string[, format]) |

Classes

`ParamStore`(root_dir, file_name) |
`RawConfigParser`([defaults, dict_type, ...]) |
`calib_store`(root_dir) | Stocke les données “calibrées” de la station météo.
`core_store`(root_dir) |
`daily_store`(root_dir) | Stocke les données sommaires quotidiens de la stations météo.
`data_store`(root_dir) | Stocke les données brutes de la station météo.
`date` | date(année, mois, jour) –> date object
`datetime` | datetime(année, mois, jour[, heure[, minute[, seconde[, microseconde[,tzinfo]]]]])
`hourly_store`(root_dir) | Stocke les données sommaires horaire de la stations météo.
`monthly_store`(root_dir) | Stocke les données mensuelles sommaire de la stations météo.
`params`(root_dir) | Les paramètres sont stockés dans le fichier “weather.ini”, dans le répertoire spécifié par root_dir.
`status`(root_dir) | Le status est stocké dans le fichier “status.ini”, dans le répertoire spécifié par root_dir.
`timedelta` | Différence entre deux valeurs de datetime.

`pywws.DataStore.``safestrptime`(date_string, format=None)

class `pywws.DataStore.``ParamStore`(root_dir, file_name)
  `flush`()
  `get`(section, option, default=None)

    Obtient une valeur de paramètre et renvoie une chaîne.

    Si la valeur par défaut est spécifiée et la section ou l’option n’est pas définie dans le fichier, ils sont créés et définit par défaut, qui est alors la valeur retournée.

  `get_datetime`(section, option, default=None)
  `set`(section, option, value)

    Définit l’option dans la section, à chaîne.

  `unset`(section, option)

    Supprimer l’option de la section.

class `pywws.DataStore.``params`(root_dir)

  Les paramètres sont stockés dans le fichier “weather.ini”, dans le répertoire spécifié par root_dir.

class `pywws.DataStore.``status`(root_dir)

  Le status est stocké dans le fichier “status.ini”, dans le répertoire spécifié par root_dir.

class `pywws.DataStore.``core_store`(root_dir)
  `before`(idx)

    Retourne datetime (horodate) du plus récent enregistrement de données existant dont datetime est <idx.

    Peut même ne pas être dans la même année! Si aucun enregistrement n’existe, retourne None (Aucun).

  `after`(idx)

    Retourne datetime (horodate) de la plus ancienne donnée existante dont datetime est> = idx.

    Peut même ne pas être dans la même année! Si aucun enregistrement n’existe, retourne None (Aucun).

  `nearest`(idx)

    Retourne le datetime (horodate) de l’enregistrement dont le datetime est le plus près de idx.

  `flush`()

class `pywws.DataStore.``data_store`(root_dir)

  Stocke les données brutes de la station météo.

  `key_list` = ['idx', 'delay', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'status', 'illuminance', 'uv']
  `conv` = {'status': <type 'int'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'illuminance': <type 'float'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x3422cf8>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'delay': <type 'int'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``calib_store`(root_dir)

  Stocke les données “calibrées” de la station météo.

  `key_list` = ['idx', 'delay', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'rel_pressure', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'status', 'illuminance', 'uv']
  `conv` = {'status': <type 'int'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'illuminance': <type 'float'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x3422cf8>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'delay': <type 'int'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``hourly_store`(root_dir)

  Stocke les données sommaires horaire de la stations météo.

  `key_list` = ['idx', 'hum_in', 'temp_in', 'hum_out', 'temp_out', 'abs_pressure', 'rel_pressure', 'pressure_trend', 'wind_ave', 'wind_gust', 'wind_dir', 'rain', 'illuminance', 'uv']
  `conv` = {'pressure_trend': <type 'float'>, 'wind_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure': <type 'float'>, 'hum_in': <type 'int'>, 'temp_out': <type 'float'>, 'wind_dir': <type 'int'>, 'hum_out': <type 'int'>, 'wind_gust': <type 'float'>, 'idx': <function safestrptime at 0x3422cf8>, 'uv': <type 'int'>, 'temp_in': <type 'float'>, 'illuminance': <type 'float'>, 'abs_pressure': <type 'float'>}

class `pywws.DataStore.``daily_store`(root_dir)

  Stocke les données sommaires quotidiens de la stations météo.

  `key_list` = ['idx', 'start', 'hum_out_ave', 'hum_out_min', 'hum_out_min_t', 'hum_out_max', 'hum_out_max_t', 'temp_out_ave', 'temp_out_min', 'temp_out_min_t', 'temp_out_max', 'temp_out_max_t', 'hum_in_ave', 'hum_in_min', 'hum_in_min_t', 'hum_in_max', 'hum_in_max_t', 'temp_in_ave', 'temp_in_min', 'temp_in_min_t', 'temp_in_max', 'temp_in_max_t', 'abs_pressure_ave', 'abs_pressure_min', 'abs_pressure_min_t', 'abs_pressure_max', 'abs_pressure_max_t', 'rel_pressure_ave', 'rel_pressure_min', 'rel_pressure_min_t', 'rel_pressure_max', 'rel_pressure_max_t', 'wind_ave', 'wind_gust', 'wind_gust_t', 'wind_dir', 'rain', 'illuminance_ave', 'illuminance_max', 'illuminance_max_t', 'uv_ave', 'uv_max', 'uv_max_t']
  `conv` = {'temp_in_min': <type 'float'>, 'temp_in_max': <type 'float'>, 'uv_ave': <type 'float'>, 'temp_out_max': <type 'float'>, 'temp_out_min': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'start': <function safestrptime at 0x3422cf8>, 'hum_in_max_t': <function safestrptime at 0x3422cf8>, 'uv_max_t': <function safestrptime at 0x3422cf8>, 'temp_in_max_t': <function safestrptime at 0x3422cf8>, 'abs_pressure_min_t': <function safestrptime at 0x3422cf8>, 'illuminance_ave': <type 'float'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x3422cf8>, 'wind_gust': <type 'float'>, 'temp_out_min_t': <function safestrptime at 0x3422cf8>, 'wind_gust_t': <function safestrptime at 0x3422cf8>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x3422cf8>, 'temp_out_max_t': <function safestrptime at 0x3422cf8>, 'uv_max': <type 'int'>, 'illuminance_max_t': <function safestrptime at 0x3422cf8>, 'rel_pressure_max': <type 'float'>, 'temp_in_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x3422cf8>, 'hum_out_max': <type 'int'>, 'illuminance_max': <type 'float'>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x3422cf8>, 'temp_in_min_t': <function safestrptime at 0x3422cf8>, 'hum_out_max_t': <function safestrptime at 0x3422cf8>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x3422cf8>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x3422cf8>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'hum_in_ave': <type 'float'>, 'hum_in_min': <type 'int'>}

class `pywws.DataStore.``monthly_store`(root_dir)

  Stocke les données mensuelles sommaire de la stations météo.

  `key_list` = ['idx', 'start', 'hum_out_ave', 'hum_out_min', 'hum_out_min_t', 'hum_out_max', 'hum_out_max_t', 'temp_out_ave', 'temp_out_min_lo', 'temp_out_min_lo_t', 'temp_out_min_hi', 'temp_out_min_hi_t', 'temp_out_min_ave', 'temp_out_max_lo', 'temp_out_max_lo_t', 'temp_out_max_hi', 'temp_out_max_hi_t', 'temp_out_max_ave', 'hum_in_ave', 'hum_in_min', 'hum_in_min_t', 'hum_in_max', 'hum_in_max_t', 'temp_in_ave', 'temp_in_min_lo', 'temp_in_min_lo_t', 'temp_in_min_hi', 'temp_in_min_hi_t', 'temp_in_min_ave', 'temp_in_max_lo', 'temp_in_max_lo_t', 'temp_in_max_hi', 'temp_in_max_hi_t', 'temp_in_max_ave', 'abs_pressure_ave', 'abs_pressure_min', 'abs_pressure_min_t', 'abs_pressure_max', 'abs_pressure_max_t', 'rel_pressure_ave', 'rel_pressure_min', 'rel_pressure_min_t', 'rel_pressure_max', 'rel_pressure_max_t', 'wind_ave', 'wind_gust', 'wind_gust_t', 'wind_dir', 'rain', 'rain_days', 'illuminance_ave', 'illuminance_max_lo', 'illuminance_max_lo_t', 'illuminance_max_hi', 'illuminance_max_hi_t', 'illuminance_max_ave', 'uv_ave', 'uv_max_lo', 'uv_max_lo_t', 'uv_max_hi', 'uv_max_hi_t', 'uv_max_ave']
  `conv` = {'uv_ave': <type 'float'>, 'illuminance_max_hi_t': <function safestrptime at 0x3422cf8>, 'uv_max_lo_t': <function safestrptime at 0x3422cf8>, 'temp_out_max_hi_t': <function safestrptime at 0x3422cf8>, 'temp_out_max_lo': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x3422cf8>, 'temp_in_min_hi': <type 'float'>, 'temp_in_min_lo': <type 'float'>, 'start': <function safestrptime at 0x3422cf8>, 'hum_in_max_t': <function safestrptime at 0x3422cf8>, 'rain_days': <type 'int'>, 'abs_pressure_min_t': <function safestrptime at 0x3422cf8>, 'temp_out_max_hi': <type 'float'>, 'illuminance_ave': <type 'float'>, 'temp_out_min_lo': <type 'float'>, 'illuminance_max_ave': <type 'float'>, 'uv_max_hi': <type 'int'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'temp_out_min_hi': <type 'float'>, 'wind_gust': <type 'float'>, 'temp_in_max_hi_t': <function safestrptime at 0x3422cf8>, 'temp_in_max_lo': <type 'float'>, 'temp_in_min_ave': <type 'float'>, 'wind_gust_t': <function safestrptime at 0x3422cf8>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x3422cf8>, 'illuminance_max_lo': <type 'float'>, 'temp_in_min_lo_t': <function safestrptime at 0x3422cf8>, 'illuminance_max_hi': <type 'float'>, 'temp_out_max_lo_t': <function safestrptime at 0x3422cf8>, 'temp_in_max_hi': <type 'float'>, 'rel_pressure_max': <type 'float'>, 'uv_max_hi_t': <function safestrptime at 0x3422cf8>, 'temp_in_ave': <type 'float'>, 'uv_max_ave': <type 'float'>, 'temp_in_max_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x3422cf8>, 'hum_out_max': <type 'int'>, 'temp_in_min_hi_t': <function safestrptime at 0x3422cf8>, 'temp_out_min_ave': <type 'float'>, 'temp_out_min_hi_t': <function safestrptime at 0x3422cf8>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x3422cf8>, 'hum_out_max_t': <function safestrptime at 0x3422cf8>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x3422cf8>, 'uv_max_lo': <type 'int'>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x3422cf8>, 'temp_out_min_lo_t': <function safestrptime at 0x3422cf8>, 'illuminance_max_lo_t': <function safestrptime at 0x3422cf8>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'temp_in_max_lo_t': <function safestrptime at 0x3422cf8>, 'hum_in_ave': <type 'float'>, 'temp_out_max_ave': <type 'float'>, 'hum_in_min': <type 'int'>}

### Navigation

- index
- modules |
- suivant |
- précédent |
- documentation pywws 13.09_r1069 »
- Programmes et des modules Python »