12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- demeter database
- name:data.py
- author:rabin
- """
- from __load__ import *
- class Data(Model):
- __table__ = 'data'
- def setTable(self, data):
- self.table = self.__table__ + '_' + str(data['farm']) + '_' + str(data['device']) + '1'
- def insert(self, data):
- self.setTable(data)
- json = self.insert_json(data)
- self.db.write_points(json)
- def insert_json(self, data):
- json = [
- {
- "measurement": self.table,
- "tags": {
- "hard": data['hard'],
- "type":data['type'],
- "gateway": data['gateway']
- },
- #"time": data['time'],
- "fields": {
- 'source' : int(data['source']),
- 'value' : int(data['value'])
- }
- }]
- return json
- def select(self, farm, device, type=None, hard=None, gateway=None, value=None, search=None):
- data = {}
- data['farm'] = farm
- data['device'] = device
- self.setTable(data)
- where = []
- if type:
- where.append('type = \'' + type + '\'')
- if hard:
- where.append('hard = \'' + hard + '\'')
- if gateway:
- where.append('gateway = \'' + gateway + '\'')
- if search:
- for value in search:
- where.append(value)
- if where:
- where = ' where ' + " and ".join(where)
- #group by time(30m) where time > now() – 1d 30分钟聚合,大于昨天的数据 1d 1h
- sql = 'select value from ' + self.table + where
- data = self.db.query(sql)
- return [value for value in data.raw['series'][0]['values']]
|