DataStore.py - memorizza le letture in file di facile accesso
Questo modulo è il cuore del mio software per la stazione meteo. Esso memorizza i dati su disco, ma senza il sovraccarico di un complesso database. L’ho progettato per funzionare su una macchina con poca memoria come il mio router Asus. Per ridurre al minimo l’utilizzo della memoria, carica solo l’equivalente di un giorno di dati alla volta in memoria.
Da un punto di vista “user”, i dati vengono eseguiti come un incrocio tra un elenco e un dizionario. Ogni record di dati è indicizzato da un oggetto datetime.datetime (comportamento di dizionario), ma i record vengono archiviati in ordine ed è possibile accedervi come fogli (comportamento di elenco).
Ad esempio, per accedere ai dati orari per il giorno di Natale 2009, uno potrebbe effettuare le seguenti operazioni:
from datetime import datetime
from pywws 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']
Alcuni esempi di accesso dati:
# 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):]
Si noti che l’indice datetime.datetime è in formato UTC. Potrebbe essere necessario applicare un offset per convertire in ora locale.
Il modulo fornisce cinque classi per archiviare dati diversi. data_store prende i dati “raw” dalla stazione meteo; calib_store, hourly_store, daily_store e monthly_store memorizza i dati elaborati (vedi pywws.Process).Tutti e tre sono derivati dallo stessa classe core_store, differiscono solo per le chiavi e i tipi di dati memorizzati in ogni record.
Funzioni
safestrptime(date_string[, format]) |
Classi
ParamStore(root_dir, file_name) | |
RawConfigParser([defaults, dict_type, ...]) | |
calib_store(root_dir) | Memorizza i dati ‘calibrati’ della Stazione Meteo. |
core_store(root_dir) | |
daily_store(root_dir) | Memorizza i dati giornalieri di riepilogo della Stazione Meteo. |
data_store(root_dir) | Memorizza i dati grezzi Stazione Meteo. |
date | date(year, month, day) –> date object |
datetime | datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) |
hourly_store(root_dir) | Memorizza i dati orari di riepilogo della Stazione Meteo. |
monthly_store(root_dir) | Memorizza i dati mensili di riepilogo della Stazione Meteo. |
params(root_dir) | I parametri sono memorizzati in un file “weather.ini” in root_dir. |
status(root_dir) | Lo stato viene memorizzato in un file “status.ini” in root_dir. |
timedelta | Differenza tra due valori datetime. |
I parametri sono memorizzati in un file “weather.ini” in root_dir.
Lo stato viene memorizzato in un file “status.ini” in root_dir.
Ritorno data ora dell’ultimo record di dati esistenti cui data ora è < idx.
Potrebbe anche non essere nello stesso anno! Se non esiste nessun record, restituisce None.
Memorizza i dati grezzi Stazione Meteo.
Memorizza i dati ‘calibrati’ della Stazione Meteo.
Memorizza i dati orari di riepilogo della Stazione Meteo.
Memorizza i dati giornalieri di riepilogo della Stazione Meteo.
Memorizza i dati mensili di riepilogo della Stazione Meteo.