models.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from models.data_center.Base import Base
  2. from sqlalchemy import text
  3. class ItemData(Base):
  4. _table_name = 'dc_item_data'
  5. def multi_insert(self, datas):
  6. if len(datas) == 0:
  7. return
  8. query = "INSERT INTO `dc_item_data` (`project_id`, `item`, `val`, `htime`, `tag`)VALUES {}".format(','.join(datas))
  9. print(query, "\n")
  10. super().execute(query)
  11. def __init__(self, db):
  12. super().__init__(db)
  13. class CleanBind(Base):
  14. _table_name = 'dc_clean_bind'
  15. def get(self, project_id, target_item):
  16. session = Base.get_session()
  17. query = 'select * from {} where project_id={} and `item` = \'{}\' limit 1'.format(self._table_name, project_id, target_item)
  18. try:
  19. data = session.execute(text(query)).one()
  20. except Exception:
  21. return None
  22. finally:
  23. session.close()
  24. return data
  25. def __init__(self, db):
  26. super().__init__(db)
  27. class CleanQuality(Base):
  28. _table_name = 'dc_clean_quality'
  29. def insert(self, data):
  30. # query = "INSERT INTO `{}` (`project_id`, `tag`, `item`, `count`, `unique`, `min`, `max`, `mean`, `std`, `p25`, `p50`, `p75`, `top`, `freq`) VALUES({project_id},{tag},{item},{count},{unique},'{min}','{max}','{mean}',{std},{25%},{50%},{75%},'{top}','{freq}')".format(self._table_name, **data)
  31. query = "INSERT INTO `{}` (`project_id`, `tag`, `item`, `describe`) VALUES({project_id},'{tag}','{item}','{describe}')".format(self._table_name, **data)
  32. super().execute(query)
  33. def __init__(self, db):
  34. super().__init__(db)
  35. class ItemMap(Base):
  36. engine = None
  37. _session = None
  38. _table_name = 'dc_item_map'
  39. def get(self, project_id, source_item, fields=['project_id','device_code','source_item','target_item']):
  40. session = Base.get_session()
  41. query = 'select {} from {} where project_id={} and `item_name` = \'{}\' limit 1'.format(','.join(fields), self._table_name, project_id, item_name)
  42. try:
  43. data = session.execute(text(query)).one()
  44. except Exception:
  45. return None
  46. finally:
  47. session.close()
  48. return data
  49. def find_all(self):
  50. session = Base.get_session()
  51. query = 'select project_id,device_code,source_item,target_item from {}'.format(self._table_name)
  52. try:
  53. data = session.execute(text(query)).all()
  54. finally:
  55. session.close()
  56. return data
  57. def __init__(self, db):
  58. super().__init__(db)