import pymysql


class Mysql(object):
    """
    封装后的mysql方法
    """
    def __init__(self):
        self.connection = pymysql.connect(
            host="rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com",  # 数据库IP地址,内网地址
            port=3306,  # 端口号
            user="crawler",  # mysql用户名
            passwd="crawler123456@",  # mysql用户登录密码
            db="piaoquan-crawler",  # 数据库名
            charset="utf8mb4"  # 如果数据库里面的文本是utf8编码的,charset指定是utf8
        )

    def insert_line(self, data):
        """
        :param data: 插入Mysql的代码
        :return:
        """
        if self.index(data):
            try:
                with self.connection.cursor() as cursor:
                    sql = "INSERT INTO we_analysis_results (mini_program, task_name, subject, date, control_group, test_group1, test_group2, test_group3, test_group4, test_group5, test_group6, test_group7, test_group8, test_group9, test_group10, test_group11, test_group12, test_group13, test_group14, test_group15, test_group16, test_group17, test_group18, test_group19, test_group20, test_group21, test_group22, test_group23, test_group24) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);"
                    cursor.execute(sql, data)
                self.connection.commit()
            finally:
                self.connection.close()
        else:
            print("数据已经存在")

    def index(self, data):
        """
        :param data: 判断数据是否去重
        :return:
        """
        mini_program = data[0]
        task_name = data[1]
        subject = data[2]
        date = data[3]
        sql = (
            f'SELECT 1 FROM we_analysis_results where mini_program = "{mini_program}" and task_name = "{task_name}" and subject = "{subject}" and date = "{date}"')
        print(sql)
        cursor = self.connection.cursor()
        cursor.execute(sql)
        data = cursor.fetchall()
        if data:
            return False
        else:
            return True