pywws.DataStore — pywws 13.06_r1023 documentation

### Navigation

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

# pywws.DataStore

## Introduction

Ce module est au cœur de mon logiciel de station météo. Il stocke les données sur le 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` (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']

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`). Tous les trois sont issues 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é

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

Un fichier distinct est utilisé pour les données de chaque jour, pour garder la charge mémoire raisonnable. Un jour à la fois est conservé en mémoire et sauvegardé sur le disque quand un autre jour doit être accessible.

Les données sont accédées comme un croisement entre une liste et un dictionnaire. Les exemples suivants sont tous valides: # obtenir la donné la plus près de Noel à 9h30 data[data.nearest(datetime(2008, 12, 25, 9, 30))] # obtenir le tableau complet, équivalent de data[:] ou seulement data data[datetime.min:datetime.max] # obtenir les données des dernières 12 heures data[datetime.utcnow() - timedelta(hours=12):]

Fonctions

`safestrptime`(date_string[, format]) |

Classes

`data_store`(root_dir) | Stocke les données brutes de la station météo.
`calib_store`(root_dir) | Stocke les données “calibrées” de la station météo.
`hourly_store`(root_dir) | Stocke les données sommaires horaire de la stations météo.
`daily_store`(root_dir) | Stocke les données sommaires quotidiens de la stations météo.
`monthly_store`(root_dir) | Stocke les données mensuelles sommaire de la stations météo.
`core_store`(root_dir) |
`params`(root_dir) | Les paramètres sont stockés dans le fichier “weather.ini”, dans le répertoire spécifié par root_dir.

`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.

    If default is specified and section or option are not defined in the file, they are created and set to default, which is then the return value.

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

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

  `unset`(section, option)

    Remove option from 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)

  Status is stored in a file “status.ini” in 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 0x23ea8c0>, '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 0x23ea8c0>, '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 0x23ea8c0>, '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 0x23ea8c0>, 'hum_in_max_t': <function safestrptime at 0x23ea8c0>, 'uv_max_t': <function safestrptime at 0x23ea8c0>, 'temp_in_max_t': <function safestrptime at 0x23ea8c0>, 'abs_pressure_min_t': <function safestrptime at 0x23ea8c0>, 'illuminance_ave': <type 'float'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x23ea8c0>, 'wind_gust': <type 'float'>, 'temp_out_min_t': <function safestrptime at 0x23ea8c0>, 'wind_gust_t': <function safestrptime at 0x23ea8c0>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x23ea8c0>, 'temp_out_max_t': <function safestrptime at 0x23ea8c0>, 'uv_max': <type 'int'>, 'illuminance_max_t': <function safestrptime at 0x23ea8c0>, 'rel_pressure_max': <type 'float'>, 'temp_in_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x23ea8c0>, 'hum_out_max': <type 'int'>, 'illuminance_max': <type 'float'>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x23ea8c0>, 'temp_in_min_t': <function safestrptime at 0x23ea8c0>, 'hum_out_max_t': <function safestrptime at 0x23ea8c0>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x23ea8c0>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x23ea8c0>, '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 0x23ea8c0>, 'uv_max_lo_t': <function safestrptime at 0x23ea8c0>, 'temp_out_max_hi_t': <function safestrptime at 0x23ea8c0>, 'temp_out_max_lo': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x23ea8c0>, 'temp_in_min_hi': <type 'float'>, 'temp_in_min_lo': <type 'float'>, 'start': <function safestrptime at 0x23ea8c0>, 'hum_in_max_t': <function safestrptime at 0x23ea8c0>, 'rain_days': <type 'int'>, 'abs_pressure_min_t': <function safestrptime at 0x23ea8c0>, '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 0x23ea8c0>, 'temp_in_max_lo': <type 'float'>, 'temp_in_min_ave': <type 'float'>, 'wind_gust_t': <function safestrptime at 0x23ea8c0>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x23ea8c0>, 'illuminance_max_lo': <type 'float'>, 'temp_in_min_lo_t': <function safestrptime at 0x23ea8c0>, 'illuminance_max_hi': <type 'float'>, 'temp_out_max_lo_t': <function safestrptime at 0x23ea8c0>, 'temp_in_max_hi': <type 'float'>, 'rel_pressure_max': <type 'float'>, 'uv_max_hi_t': <function safestrptime at 0x23ea8c0>, 'temp_in_ave': <type 'float'>, 'uv_max_ave': <type 'float'>, 'temp_in_max_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x23ea8c0>, 'hum_out_max': <type 'int'>, 'temp_in_min_hi_t': <function safestrptime at 0x23ea8c0>, 'temp_out_min_ave': <type 'float'>, 'temp_out_min_hi_t': <function safestrptime at 0x23ea8c0>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x23ea8c0>, 'hum_out_max_t': <function safestrptime at 0x23ea8c0>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x23ea8c0>, 'uv_max_lo': <type 'int'>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x23ea8c0>, 'temp_out_min_lo_t': <function safestrptime at 0x23ea8c0>, 'illuminance_max_lo_t': <function safestrptime at 0x23ea8c0>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'temp_in_max_lo_t': <function safestrptime at 0x23ea8c0>, 'hum_in_ave': <type 'float'>, 'temp_out_max_ave': <type 'float'>, 'hum_in_min': <type 'int'>}

### Navigation

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