Python versione Bignami - Il modulo DB-All.e
import dballe
import dballe.volnd
# Si connette al database
db = dballe.DB(dsn, user, password)
# Imposta una query
query = dballe.Record()
query["var"] = "B12001"
query["rep_memo"] = "synop"
query.setlevel(dballe.Level(105, 2, 0, 0))
query.settimerange(dballe.Timerange(0, 0, 0))
# Legge i risultati in una matrice (anagrafica x datetime)
vars = dballe.volnd.read(db.query(query), (
dballe.volnd.AnaIndex(),
dballe.volnd.DateTimeIndex()))
# Legge i valori della variabile "B12001"
data = vars["B12001"]
# Data is now a 2-dimensional Masked Array with the data
# Le informazioni sul significato degli indici delle varie dimensioni delle
# matrici risultanti si possono trovare in data.dims, che contiene una lista
# di informazioni per dimensione.
print "Ana dimension is", len(data.dims[0]), "items long"
print "Datetime dimension is", len(data.dims[1]), "items long"
print "First 10 stations along the Ana dimension:", data.dims[0][:10]
print "First 10 datetimes along the DateTime dimension:", data.dims[1][:10]
print "The average of all values is:" numpy.average(data.vals)
print "Average over time per every station:"
for idx, station in enumerate(data.dims[0]):
print station, numpy.average(data.vals[idx,:])
print "Average per every sampled time:"
for idx, dtime in enumerate(data.dims[1]):
print dtime, numpy.average(data.vals[:idx])
dballe.volnd
db = dballe.DB(dsn, user, password)
res = dballe.volnd.read(db.query(query), (Dimensione1, Dimensione2...))
Carica in res
un volume di dati con le dimensioni date, scelto
dalla query data.
Le dimensioni possibili sono:
AnaIndex()
: stazioneNetworkIndex()
: reteLevelIndex()
: livelloTimeRangeIndex()
: scadenzaDateTimeIndex()
: oraIntervalIndex(start, step, tolerance=0, end=None, shared=True, frozen=False)
: intervalli fissi di tempo:start
is a datetime.datetime object giving the starting time of the time interval of this index.step
is a datetime.timedelta object with the interval between sampling points.tolerance
is a datetime.timedelta object specifying the maximum allowed interval between a datum datetime and the sampling step. If the interval is bigger than the tolerance, the data is discarded.end
is an optional datetime.datetime object giving the ending time of the time interval of the index. If omitted, the index will end at the latest accepted datum coming out of the database.
dballe.rconvert
import dballe.rconvert
dballe.rconvert.volnd_save_to_r(vars, filename)
dballe.dbacsv
import dballe
import dballe.dbacsv
# Si connette al database
db = dballe.DB(dsn, user, password)
# Imposta una query
query = dballe.Record()
query["var"] = "B12001"
query["rep_memo"] = "synop"
query.setlevel(dballe.Level(105, 2, 0, 0))
query.settimerange(dballe.Timerange(0, 0, 0))
dballe.dbacsv.export(db, query, open("dati.csv", "w"))
dballe.DB
Gli oggetti Dballe.DB
sono il punto principale di accesso al database.
Metodi:
db.exportResults(query, encoding, file)
esporta i risultati della query in un file.encoding
può essere "BUFR" o "CREX";file
è il nome del file da scrivere. Il template viene scelto a seconda dei dati da esportare.db.exportResultsAsGeneric(query, encoding, file)
esporta i risultati della query in un file, usando il template generico.encoding
può essere "BUFR" o "CREX";file
è il nome del file da scrivere.-
db.insert(record, canReplace, addToPseudoana)
inserisce un valore nel database:rec
è il record con il valore da inserirecanReplace
(True o False) indica se sovrascrivere i dati esistentiaddToPseudoana
(True o False) se True aggiunge i valori pseudoanagrafici (come l'altezza stazione) al database se presenti nel record, altrimenti li ignora
-
db.query(query)
fa una query e permette di iterare sui valori:
for rec in db.query(query):
print rec.get("lat"), rec.get("lon")
db.queryAna(query)
restituisce i valori pseudoanagrafici relativi a una querydb.remove(query)
cancella dal database i valori corrispondenti a una query (equivalente aidba_dimenticami
)db.reset(repinfo_file="")
cancella i dati dal database (equivalente aidba_scopa
)
Dballe.Record
rec = dballe.Record()
rec["lat"]=12.345
rec["lon"]=45.678
for idx, val in enumerate(db.query(rec)):
print "Il risultato", idx+1, "e':"
for nome, valore in val.iteritems():
print " ", nome, valore
Metodi:
rec["nome"]
restituisce il valore del nome datorec["nome"] = valore
setta un valore nel recordrec.clear()
cancella tutti i valori dal recordrec.clearVars()
cancella tutti i di variabile dal record, ma non le informazioni sulle variabili, tipo lat, lon, ident, datetime, livelli, eccetera.rec.contains("B12001")
controlla se il record contiene il tal datorec1 = rec.copy()
fa una copia del recordrec.iteritems()
itera sulle coppie(nome, valore)
presenti nel recordrec.setAnaContext()
equivalente aidba_setcontextana
rec.set(nome, valore)
,rec.seti(nome, valore)
,rec.setd(nome, valore)
,rec.seti(nome, valore)
,rec.setc(nome, valore)
equivalenti alle corrispondentiidba_set*
rec.unset(nome)
equivalente aidba_unset