mysql_helper.py 3.2 KB

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