DataBaseUtils.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. """
  2. @desc 数据库连接
  3. @auth chenkai
  4. @date 2020/11/19
  5. """
  6. from model.DataBaseOperation import MysqlOperation
  7. from model.log import logger
  8. import yaml
  9. import os
  10. from clickhouse_driver.client import Client
  11. log = logger()
  12. class MysqlUtils:
  13. _quchen_text = None
  14. def __init__(self):
  15. p_path =os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
  16. path = os.path.join(p_path,"config", "db_config.yaml")
  17. f = open(path, encoding="utf-8")
  18. self.config = yaml.load(f.read(), Loader=yaml.FullLoader)
  19. @property
  20. def quchen_text(self):
  21. conf = self.config['quchen_text']
  22. self._quchen_text = MysqlOperation(host=conf['host'],
  23. user=conf['user'],
  24. passwd=conf['passwd'],
  25. db=conf['db'])
  26. return self._quchen_text
  27. def find_db(self, db):
  28. if db == "quchen_text":
  29. self._quchen_text = self._quchen_text
  30. return self._quchen_text
  31. else:
  32. log.debug("输入数据库有误")
  33. def close(self):
  34. if self._quchen_text:
  35. self._quchen_text.cursor.close()
  36. self._quchen_text.conn.close()
  37. class CkUtils:
  38. def __init__(self):
  39. self.client = Client(host='cc-bp1h3yc7o3g3o7k64o.ads.aliyuncs.com',
  40. user='qucheng_ck',
  41. password='Qc123456',
  42. port='3306',
  43. send_receive_timeout=5)
  44. def execute(self, sql):
  45. self.client.execute(sql)
  46. def insertMany(self,table,col,data):
  47. """
  48. :param table: 表名 srt
  49. :param col: 字段名 srt eg: ”a,b,c“
  50. :param data: tuple/list
  51. :return:
  52. """
  53. max=200
  54. sql="insert into {} ({}) values ".format(table,col)
  55. if len(data) == 0:
  56. log.debug("data.len==0")
  57. return
  58. if len(data) <= max:
  59. sql = sql+str(data)[1:-1]
  60. # log.info(sql)
  61. # log.info("insert {} rows".format(len(data)))
  62. self.execute(sql)
  63. return
  64. else:
  65. sql2=sql+str(data[:max])[1:-1]
  66. # log.info(sql2)
  67. self.execute(sql2)
  68. # log.info("insert {} rows".format(max))
  69. self.insertMany(table,col,data[max:])
  70. if __name__ == '__main__':
  71. p_path = os.path.dirname(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))
  72. print(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)))