scheduling_db.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # -*- coding: utf-8 -*-
  2. # @Time: 2023/12/26
  3. """
  4. 数据库连接及操作
  5. """
  6. import pymysql
  7. from common.common_log import Common
  8. # from common import Common
  9. class MysqlHelper:
  10. @classmethod
  11. def connect_mysql(cls, env, action):
  12. if env == 'hk':
  13. if action == 'get_author_map':
  14. # 创建一个 Connection 对象,代表了一个数据库连接
  15. connection = pymysql.connect(
  16. host="rm-bp1159bu17li9hi94ro.mysql.rds.aliyuncs.com", # 数据库IP地址,内网地址
  17. port=3306, # 端口号
  18. user="crawler", # mysql用户名
  19. passwd="crawler123456@", # mysql用户登录密码
  20. db="piaoquan-crawler", # 数据库名
  21. # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  22. charset="utf8mb4")
  23. else:
  24. # 创建一个 Connection 对象,代表了一个数据库连接
  25. connection = pymysql.connect(
  26. host="rm-j6cz4c6pt96000xi3.mysql.rds.aliyuncs.com", # 数据库IP地址,内网地址
  27. # host="rm-j6cz4c6pt96000xi3lo.mysql.rds.aliyuncs.com",# 数据库IP地址,外网地址
  28. port=3306, # 端口号
  29. user="crawler", # mysql用户名
  30. passwd="crawler123456@", # mysql用户登录密码
  31. db="piaoquan-crawler", # 数据库名
  32. # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  33. charset="utf8mb4")
  34. elif env == 'prod':
  35. # 创建一个 Connection 对象,代表了一个数据库连接
  36. connection = pymysql.connect(
  37. host="rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com", # 数据库IP地址,内网地址
  38. # host="rm-bp1159bu17li9hi94ro.mysql.rds.aliyuncs.com",# 数据库IP地址,外网地址
  39. port=3306, # 端口号
  40. user="crawler", # mysql用户名
  41. passwd="crawler123456@", # mysql用户登录密码
  42. db="piaoquan-crawler", # 数据库名
  43. # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  44. charset="utf8mb4")
  45. else:
  46. # 创建一个 Connection 对象,代表了一个数据库连接
  47. connection = pymysql.connect(
  48. host="rm-bp1k5853td1r25g3n690.mysql.rds.aliyuncs.com", # 数据库IP地址,内网地址
  49. # host="rm-bp1k5853td1r25g3ndo.mysql.rds.aliyuncs.com", # 数据库IP地址,外网地址
  50. port=3306, # 端口号
  51. user="crawler", # mysql用户名
  52. passwd="crawler123456@", # mysql用户登录密码
  53. db="piaoquan-crawler", # 数据库名
  54. # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  55. charset="utf8mb4")
  56. return connection
  57. @classmethod
  58. def get_values(cls, log_type, crawler, sql, env, action=''):
  59. try:
  60. # 连接数据库
  61. connect = cls.connect_mysql(env, action)
  62. # 返回一个 Cursor对象
  63. mysql = connect.cursor(cursor=pymysql.cursors.DictCursor)
  64. # 执行 sql 语句
  65. mysql.execute(sql)
  66. # fetchall方法返回的是一个元组,里面每个元素也是元组,代表一行记录
  67. data = mysql.fetchall()
  68. # 关闭数据库连接
  69. connect.close()
  70. # 返回查询结果,元组
  71. return data
  72. except Exception as e:
  73. Common.logger(log_type).error(f"get_values异常:{e}\n")
  74. @classmethod
  75. def update_values(cls, log_type, crawler, sql, env, action=''):
  76. # 连接数据库
  77. connect = cls.connect_mysql(env, action)
  78. # 返回一个 Cursor对象
  79. mysql = connect.cursor()
  80. try:
  81. # 执行 sql 语句
  82. res = mysql.execute(sql)
  83. # 注意 一定要commit,否则添加数据不生效
  84. connect.commit()
  85. return res
  86. except Exception as e:
  87. Common.logger(log_type).error(f"update_values异常,进行回滚操作:{e}\n")
  88. # 发生错误时回滚
  89. connect.rollback()
  90. # 关闭数据库连接
  91. connect.close()
  92. if __name__ == "__main__":
  93. pass