# -*- coding: utf-8 -*-
"""
数据库连接及操作
"""
import pymysql

class MysqlHelper:
    @classmethod
    def connect_mysql(cls):
        # 创建一个 Connection 对象,代表了一个数据库连接
        connection = pymysql.connect(
            # host="rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com",  # 数据库IP地址,内网地址
            host="rm-bp1159bu17li9hi94ro.mysql.rds.aliyuncs.com",# 数据库IP地址,外网地址
            port=3306,  # 端口号
            user="crawler",  # mysql用户名
            passwd="crawler123456@",  # mysql用户登录密码
            db="piaoquan-crawler",  # 数据库名
            # 如果数据库里面的文本是utf8编码的,charset指定是utf8
            charset="utf8")
        return connection

    @classmethod
    def get_values(cls, sql, params=None):
        try:
            # 连接数据库
            connect = cls.connect_mysql()
            # 返回一个 Cursor对象
            mysql = connect.cursor()

            if params:
                # 如果传递了 params 参数
                mysql.execute(sql, params)
            else:
                # 如果没有传递 params 参数
                mysql.execute(sql)
            # fetchall方法返回的是一个元组,里面每个元素也是元组,代表一行记录
            data = mysql.fetchall()

            # 关闭数据库连接
            connect.close()

            # 返回查询结果,元组
            return data
        except Exception as e:
            print(f"get_values异常:{e}\n")

    @classmethod
    def update_values(cls, sql):
        # 连接数据库
        connect = cls.connect_mysql()
        # 返回一个 Cursor对象
        mysql = connect.cursor()
        try:
            # 执行 sql 语句
            res = mysql.execute(sql)
            # 注意 一定要commit,否则添加数据不生效
            connect.commit()
            return res
        except Exception as e:
            # 发生错误时回滚
            connect.rollback()
        # 关闭数据库连接
        connect.close()