data.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter database
  5. name:data.py
  6. author:rabin
  7. """
  8. from __load__ import *
  9. class Data(Model):
  10. __table__ = 'data'
  11. def setTable(self, data):
  12. self.table = self.__table__ + '_' + str(data['farm']) + '_' + str(data['device']) + '1'
  13. def insert(self, data):
  14. self.setTable(data)
  15. json = self.insert_json(data)
  16. self.db.write_points(json)
  17. def insert_json(self, data):
  18. json = [
  19. {
  20. "measurement": self.table,
  21. "tags": {
  22. "hard": data['hard'],
  23. "type":data['type'],
  24. "gateway": data['gateway']
  25. },
  26. #"time": data['time'],
  27. "fields": {
  28. 'source' : int(data['source']),
  29. 'value' : int(data['value'])
  30. }
  31. }]
  32. return json
  33. def select(self, farm, device, type=None, hard=None, gateway=None, value=None, search=None):
  34. data = {}
  35. data['farm'] = farm
  36. data['device'] = device
  37. self.setTable(data)
  38. where = []
  39. if type:
  40. where.append('type = \'' + type + '\'')
  41. if hard:
  42. where.append('hard = \'' + hard + '\'')
  43. if gateway:
  44. where.append('gateway = \'' + gateway + '\'')
  45. if search:
  46. for value in search:
  47. where.append(value)
  48. if where:
  49. where = ' where ' + " and ".join(where)
  50. #group by time(30m) where time > now() – 1d 30分钟聚合,大于昨天的数据 1d 1h
  51. sql = 'select value from ' + self.table + where
  52. data = self.db.query(sql)
  53. return [value for value in data.raw['series'][0]['values']]