mgj.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!coding:utf-8
  2. import psycopg2
  3. '''
  4. select id from public.dataitem where name='Group_N_Reflux_Tank_Level';
  5. select val,htime from his.itemdata_20230925 where itemid='25';
  6. '''
  7. class MGJ():
  8. conn = None
  9. item_id_map = {}
  10. def get_item_id(self, devid, name):
  11. key = "{}_{}".format(devid, name)
  12. if key in self.item_id_map:
  13. return self.item_id_map[key]
  14. query = "select id from public.dataitem where devid={} and name='{}' limit 1".format(devid, name)
  15. print(query)
  16. cur = self.conn.cursor()
  17. cur.execute(query)
  18. row = cur.fetchone()
  19. cur.close()
  20. if row is not None:
  21. self.item_id_map[key] = row[0]
  22. return row[0]
  23. return '-'
  24. def get(self, day, devid, name, et):
  25. itemid = self.get_item_id(devid, name)
  26. if itemid == 0:
  27. return None
  28. query = "select val,htime from his.itemdata_{} where itemid='{}' and createtime <= '{}' order by createtime desc limit 1".format(day, itemid, et)
  29. print(query)
  30. cur = self.conn.cursor()
  31. cur.execute(query)
  32. row = cur.fetchone()
  33. if row is not None:
  34. return row[0]
  35. return '-'
  36. def find(self, ymd, devid, name, start=0, limit=1000):
  37. itemid = self.get_item_id(devid, name)
  38. if itemid == 0:
  39. return None
  40. query = "select val,htime from his.itemdata_{} where itemid='{}' order by createtime desc offset {} limit {}".format(ymd, itemid, start, limit)
  41. print(query)
  42. cur = self.conn.cursor()
  43. cur.execute(query)
  44. rows = cur.fetchall()
  45. cur.close()
  46. return rows
  47. def __init__(self, mgj_db):
  48. self.conn = psycopg2.connect(database=mgj_db['dbname'], user=mgj_db['user'], password=mgj_db['password'], host=mgj_db['host'], port=mgj_db['port'])