fromMysql.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author: Deepcold
  5. @file: fromMysql.py
  6. @time: 2019/8/3 14:49
  7. """""
  8. import datetime
  9. import pymysql
  10. from bin.common.handleDate import set_date
  11. from bin.db.parseDate.parseData import parse_data
  12. class GetDataFromMysql(object):
  13. def __init__(self, db_config, push_date):
  14. # 连接mysql数据库
  15. self.db_config = db_config
  16. db_info = self.db_config.db_info
  17. connect = pymysql.connect(
  18. host=db_info.HOST, user=db_info.USER, passwd=db_info.PASSWD,
  19. db=db_info.DBNAME, charset='utf8', use_unicode=True)
  20. self.cursor = connect.cursor()
  21. self.save_items = []
  22. self.push_date = push_date
  23. self.table_name = self.db_config.table_name
  24. def get_data(self, start_date):
  25. # 遍历数据表信息
  26. print("正在读取表" + self.table_name)
  27. table_info = self.db_config[self.table_name]
  28. query_words = table_info.QUERY_WORDS # 查询关键字
  29. date = start_date[self.db_config.event_type + self.db_config.event_sub_type + self.table_name]
  30. date = "'" + date + "'" # 要查询的开始日期
  31. end_date = "'" + datetime.datetime.strftime(self.push_date, "%Y-%m-%d") + "'" # 要查询的结束日期
  32. fields = ",".join(table_info.ALL_FIELDS.keys())
  33. try:
  34. self.cursor.execute("SELECT %s FROM %s where %s >= %s and %s < %s" % (
  35. fields, self.table_name, query_words["start_date"], date, query_words["start_date"], end_date))
  36. query_data = self.cursor.fetchall()
  37. print("读取完毕")
  38. except Exception as e:
  39. query_data = []
  40. print(e)
  41. if query_data:
  42. # 查询有结果,将日期更新至最新
  43. set_date(self.db_config.event_type + self.db_config.event_sub_type + self.table_name, datetime.datetime.strftime(self.push_date, "%Y-%m-%d"))
  44. for each in query_data:
  45. each = list(each)
  46. each = dict(zip(table_info.ALL_FIELDS.keys(), each))
  47. each["_id"] = each["id"]
  48. parse_data(self.db_config, each, self.push_date, self.save_items)
  49. return self.save_items