scheduling_db.py 4.2 KB

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