mysql_helper.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # -*- coding: utf-8 -*-
  2. # @Author: luojunhui
  3. # @Time: 2023/12/19
  4. """
  5. 数据库连接及操作
  6. """
  7. import redis
  8. import pymysql
  9. import os
  10. import sys
  11. sys.path.append(os.getcwd())
  12. from application.common.log import Local
  13. from application.config.mysql_config import env_dict
  14. class MysqlHelper(object):
  15. """
  16. MySQL工具, env默认prod版本
  17. """
  18. def __init__(self, env="prod", mode='', platform='', action=''):
  19. mysql_config = env_dict[env]
  20. self.connection = pymysql.connect(
  21. host=mysql_config['host'], # 数据库IP地址,内网地址
  22. port=mysql_config['port'], # 端口号
  23. user=mysql_config['user'], # mysql用户名
  24. passwd=mysql_config['passwd'], # mysql用户登录密码
  25. db=mysql_config['db'], # 数据库名
  26. charset=mysql_config['charset'] # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  27. )
  28. self.mode = mode
  29. self.platform = platform
  30. self.action = action
  31. def select(self, sql):
  32. """
  33. 查询
  34. :param sql:
  35. :return:
  36. """
  37. cursor = self.connection.cursor()
  38. cursor.execute(sql)
  39. data = cursor.fetchall()
  40. return data
  41. def select_params(self, sql, params=None):
  42. cursor = self.connection.cursor()
  43. cursor.execute(sql, params or ()) # 支持参数化查询
  44. data = cursor.fetchall()
  45. return data
  46. def update(self, sql):
  47. """
  48. 插入
  49. :param sql:
  50. :return:
  51. """
  52. cursor = self.connection.cursor()
  53. try:
  54. res = cursor.execute(sql)
  55. self.connection.commit()
  56. return res
  57. except Exception as e:
  58. Local.logger(self.mode, self.platform).error(f"update_values异常,进行回滚操作:{e}\n")
  59. self.connection.rollback()
  60. def close(self):
  61. """
  62. 关闭连接
  63. """
  64. self.connection.close()
  65. class RedisHelper:
  66. @classmethod
  67. def connect_redis(cls, env):
  68. if env == 'hk':
  69. redis_pool = redis.ConnectionPool(
  70. # host='r-bp154bpw97gptefiqk.redis.rds.aliyuncs.com', # 内网地址
  71. # host='r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com', # 测试地址
  72. host='r-bp1mb0v08fqi4hjffupd.redis.rds.aliyuncs.com', # 外网地址
  73. port=6379,
  74. db=2,
  75. password='Wqsd@2019'
  76. )
  77. redis_conn = redis.Redis(connection_pool=redis_pool)
  78. elif env == 'prod':
  79. redis_pool = redis.ConnectionPool(
  80. host='r-bp1mb0v08fqi4hjffu.redis.rds.aliyuncs.com', # 内网地址
  81. # host='r-bp1mb0v08fqi4hjffupd.redis.rds.aliyuncs.com', # 外网地址
  82. port=6379,
  83. db=2,
  84. password='Wqsd@2019'
  85. )
  86. redis_conn = redis.Redis(connection_pool=redis_pool)
  87. else:
  88. redis_pool = redis.ConnectionPool(
  89. # host='r-bp154bpw97gptefiqk.redis.rds.aliyuncs.com', # 内网地址
  90. host='r-bp154bpw97gptefiqkpd.redis.rds.aliyuncs.com', # 外网地址
  91. port=6379,
  92. db=2,
  93. password='Qingqu2019'
  94. )
  95. redis_conn = redis.Redis(connection_pool=redis_pool)
  96. return redis_conn
  97. @classmethod
  98. def redis_push(cls, env, task_key, data):
  99. redis_conn = cls.connect_redis(env)
  100. # print("开始写入数据")
  101. redis_conn.lpush(task_key, data)
  102. # print("数据写入完成")
  103. @classmethod
  104. def redis_pop(cls, env, task_key):
  105. redis_conn = cls.connect_redis(env)
  106. if redis_conn.llen(task_key) == 0:
  107. return None
  108. else:
  109. return redis_conn.rpop(task_key)