Commit 42c89cd2 authored by Takhir Fakhrutdinov's avatar Takhir Fakhrutdinov

Отладка метео

parent 85bfbf15
...@@ -92,7 +92,7 @@ class meteoBaseFile(baseFile): ...@@ -92,7 +92,7 @@ class meteoBaseFile(baseFile):
:linenos: :linenos:
:caption: get_device :caption: get_device
""" """
pkeys = await self.fectval(""" keys = await self.fetchval("""
select json_object_agg(v,atype) select json_object_agg(v,atype)
from main.t_devattr from main.t_devattr
join main.t_attrtypes using(atype) join main.t_attrtypes using(atype)
...@@ -100,11 +100,11 @@ class meteoBaseFile(baseFile): ...@@ -100,11 +100,11 @@ class meteoBaseFile(baseFile):
and parent in (42000,52000) and parent in (42000,52000)
and dtr @> now()::date and dtr @> now()::date
""",dev) """,dev)
return json.loads(keys) return keys
class meteoEopFiles(meteoBaseFile): class meteoEopFile(meteoBaseFile):
""" Создание/обновление БД RRD для метео-устройства. """ Создание/обновление БД RRD для метео-устройства.
""" """
...@@ -125,9 +125,9 @@ class meteoEopFiles(meteoBaseFile): ...@@ -125,9 +125,9 @@ class meteoEopFiles(meteoBaseFile):
tm = self.round_time(datetime.fromisoformat(d['Date'])).replace() tm = self.round_time(datetime.fromisoformat(d['Date'])).replace()
if tm not in self.times: if tm not in self.times:
self.times.add(tm) self.times.add(tm)
self.tbeg, self.tend = min(self.tbeg,dt), max(self.tend,dt) self.tbeg, self.tend = min(self.tbeg,tm), max(self.tend,tm)
for k,atype in keys.items(): for k,atype in keys.items():
self.write(f,(tm,dev,atype,d[k]) self.write(f,(tm,dev,atype,d[k]))
async def load(self,fd,args): async def load(self,fd,args):
""" Метод. Загрузка файла. """ Метод. Загрузка файла.
...@@ -145,16 +145,16 @@ class meteoEopFiles(meteoBaseFile): ...@@ -145,16 +145,16 @@ class meteoEopFiles(meteoBaseFile):
await self.check_priv_device(dev) await self.check_priv_device(dev)
self.fileattr['dev'] = dev self.fileattr['dev'] = dev
pkeys = await self.get_keys(dev) pkeys = await self.get_pkeys(dev)
fo = io.BytesIO() fo = io.BytesIO()
data = json.load(fd)[model] data = json.load(fd)[self.model]
self.prepare_csv(fo,dev,data,pkeys) self.prepare_csv(fo,dev,data,pkeys)
self.fid = await self.getfid() self.fid = await self.getfid()
fo.seek(0) fo.seek(0)
async with self.transaction(): async with self.transaction():
await self.create_doc() await self.create_doc()
await self.copy_to_table('t_meteo',source=fo,schema_name='xd',delimiter='\t') await self.copy_to_table('t_devmetrix',source=fo,schema_name='xd',delimiter='\t')
class vproFile(meteoEopFile): class vproFile(meteoEopFile):
...@@ -236,16 +236,15 @@ class eop2mFile(meteoBaseFile): ...@@ -236,16 +236,15 @@ class eop2mFile(meteoBaseFile):
tm = datetime.fromisoformat(r['data']['date']).replace(microsecond=0) tm = datetime.fromisoformat(r['data']['date']).replace(microsecond=0)
self.tbeg, self.tend = min(self.tbeg,tm), max(self.tend,tm) self.tbeg, self.tend = min(self.tbeg,tm), max(self.tend,tm)
d = r['data'] d = r['data']
rec = [ (tm,dev,atype,d[k],) for k,atype in pkeys.items() if k in d and d.get(k) is not None ] rec = [ (tm,dev,atype,d[k],) for k,atype in pkeys.items() if k in d and d.get(k) is not None ]
for l in rec: for l in rec:
self.write(fo,l) self.write(fo,l)
fid = await self.getfid() self.fid = await self.getfid()
self.fileattr = dict(devs=list(devs)) self.fileattr = dict(devs=list(devs))
fo.seek(0) fo.seek(0)
async with self.transaction(): async with self.transaction():
await self.create_doc() await self.create_doc()
await self.copy_to_table('t_meteo',source=fo,schema_name='xd',delimiter='\t') await self.copy_to_table('t_devmetrix',source=fo,schema_name='xd',delimiter='\t')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment