mysql_help_new.py 3.9 KB

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