mysql_db.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # -*- coding: utf-8 -*-
  2. """
  3. 数据库连接及操作
  4. """
  5. import pymysql
  6. from loguru import logger
  7. logger.add("/app/logs/consumption.log", rotation="10 MB")
  8. class MysqlHelper:
  9. @classmethod
  10. def connect_mysql(cls):
  11. # 创建一个 Connection 对象,代表了一个数据库连接
  12. connection = pymysql.connect(
  13. host="rm-bp1jjv3jv98133plv285-vpc-rw.mysql.rds.aliyuncs.com", # 数据库IP地址,内网地址
  14. port=3306, # 端口号
  15. user="wx2016_longvideo", # mysql用户名
  16. passwd="wx2016_longvideoP@assword1234", # mysql用户登录密码
  17. db="longvideo", # 数据库名
  18. # 如果数据库里面的文本是utf8编码的,charset指定是utf8
  19. charset="utf8")
  20. return connection
  21. @classmethod
  22. def get_values(cls, sql, params=None):
  23. try:
  24. # 连接数据库
  25. connect = cls.connect_mysql()
  26. # 返回一个 Cursor对象
  27. mysql = connect.cursor()
  28. if params:
  29. # 如果传递了 params 参数
  30. mysql.execute(sql, params)
  31. else:
  32. # 如果没有传递 params 参数
  33. mysql.execute(sql)
  34. # fetchall方法返回的是一个元组,里面每个元素也是元组,代表一行记录
  35. data = mysql.fetchall()
  36. # 关闭数据库连接
  37. connect.close()
  38. # 返回查询结果,元组
  39. return data
  40. except Exception as e:
  41. print(f"get_values异常:{e}\n")
  42. @classmethod
  43. def update_values(cls, sql):
  44. # 连接数据库
  45. connect = cls.connect_mysql()
  46. # 返回一个 Cursor对象
  47. mysql = connect.cursor()
  48. try:
  49. # 执行 sql 语句
  50. res = mysql.execute(sql)
  51. # 注意 一定要commit,否则添加数据不生效
  52. connect.commit()
  53. return res
  54. except Exception as e:
  55. # 发生错误时回滚
  56. logger.error(f"Error executing SQL: {e}")
  57. connect.rollback()
  58. return None # 返回 None 表示失败
  59. finally:
  60. # 确保资源关闭
  61. if mysql:
  62. mysql.close()
  63. if connect:
  64. connect.close()