### Navigation

- index
- modules |
- suivant |
- précédent |
- pywws 13.03_7f9fc90 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.``params`(root_dir)

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

  `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 weather.ini, 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.

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 0x2842de8>, '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 0x2842de8>, '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 0x2842de8>, '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 0x2842de8>, 'hum_in_max_t': <function safestrptime at 0x2842de8>, 'uv_max_t': <function safestrptime at 0x2842de8>, 'temp_in_max_t': <function safestrptime at 0x2842de8>, 'abs_pressure_min_t': <function safestrptime at 0x2842de8>, 'illuminance_ave': <type 'float'>, 'rel_pressure_ave': <type 'float'>, 'rain': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x2842de8>, 'wind_gust': <type 'float'>, 'temp_out_min_t': <function safestrptime at 0x2842de8>, 'wind_gust_t': <function safestrptime at 0x2842de8>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x2842de8>, 'temp_out_max_t': <function safestrptime at 0x2842de8>, 'uv_max': <type 'int'>, 'illuminance_max_t': <function safestrptime at 0x2842de8>, 'rel_pressure_max': <type 'float'>, 'temp_in_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x2842de8>, 'hum_out_max': <type 'int'>, 'illuminance_max': <type 'float'>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x2842de8>, 'temp_in_min_t': <function safestrptime at 0x2842de8>, 'hum_out_max_t': <function safestrptime at 0x2842de8>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x2842de8>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x2842de8>, '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 0x2842de8>, 'uv_max_lo_t': <function safestrptime at 0x2842de8>, 'temp_out_max_hi_t': <function safestrptime at 0x2842de8>, 'temp_out_max_lo': <type 'float'>, 'abs_pressure_max': <type 'float'>, 'rel_pressure_min_t': <function safestrptime at 0x2842de8>, 'temp_in_min_hi': <type 'float'>, 'temp_in_min_lo': <type 'float'>, 'start': <function safestrptime at 0x2842de8>, 'hum_in_max_t': <function safestrptime at 0x2842de8>, 'rain_days': <type 'int'>, 'abs_pressure_min_t': <function safestrptime at 0x2842de8>, '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 0x2842de8>, 'temp_in_max_lo': <type 'float'>, 'temp_in_min_ave': <type 'float'>, 'wind_gust_t': <function safestrptime at 0x2842de8>, 'hum_out_ave': <type 'float'>, 'rel_pressure_min': <type 'float'>, 'hum_out_min_t': <function safestrptime at 0x2842de8>, 'illuminance_max_lo': <type 'float'>, 'temp_in_min_lo_t': <function safestrptime at 0x2842de8>, 'illuminance_max_hi': <type 'float'>, 'temp_out_max_lo_t': <function safestrptime at 0x2842de8>, 'temp_in_max_hi': <type 'float'>, 'rel_pressure_max': <type 'float'>, 'uv_max_hi_t': <function safestrptime at 0x2842de8>, 'temp_in_ave': <type 'float'>, 'uv_max_ave': <type 'float'>, 'temp_in_max_ave': <type 'float'>, 'hum_in_min_t': <function safestrptime at 0x2842de8>, 'hum_out_max': <type 'int'>, 'temp_in_min_hi_t': <function safestrptime at 0x2842de8>, 'temp_out_min_ave': <type 'float'>, 'temp_out_min_hi_t': <function safestrptime at 0x2842de8>, 'wind_ave': <type 'float'>, 'abs_pressure_max_t': <function safestrptime at 0x2842de8>, 'hum_out_max_t': <function safestrptime at 0x2842de8>, 'hum_out_min': <type 'int'>, 'rel_pressure_max_t': <function safestrptime at 0x2842de8>, 'uv_max_lo': <type 'int'>, 'wind_dir': <type 'int'>, 'temp_out_ave': <type 'float'>, 'abs_pressure_ave': <type 'float'>, 'idx': <function safestrptime at 0x2842de8>, 'temp_out_min_lo_t': <function safestrptime at 0x2842de8>, 'illuminance_max_lo_t': <function safestrptime at 0x2842de8>, 'hum_in_max': <type 'int'>, 'abs_pressure_min': <type 'float'>, 'temp_in_max_lo_t': <function safestrptime at 0x2842de8>, '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.03_7f9fc90 documentation »
- Programmes et des modules Python »