# -*- coding: utf-8 -*-
import logging

import pymysql
from config.test_config import Settings


def get_connection():
    return pymysql.connect(
        host=Settings.MYSQL['host'],
        port=Settings.MYSQL['port'],
        user=Settings.MYSQL['user'],
        password=Settings.MYSQL['password'],
        database=Settings.MYSQL['database'],
        charset='utf8mb4',
        local_infile=1
    )


def fetch_one(sql):
    conn = get_connection()
    cursor = conn.cursor()
    cursor.execute(sql)
    data = cursor.fetchone()
    connect_close(cursor, conn)

    return data


def fetch_all(sql, args):
    conn = get_connection()
    cursor = conn.cursor()
    cursor.execute(sql, args)
    data_list = cursor.fetchall()
    connect_close(cursor, conn)

    return data_list


def insert(sql, args):
    conn = get_connection()
    cursor = conn.cursor()
    row = cursor.execute(sql, args)
    conn.commit()

    return row



def insert_batch(sql, args):
    conn = get_connection()
    cursor = conn.cursor()
    row = cursor.executemany(sql, args)
    conn.commit()
    connect_close(cursor, conn)
    return row


def update(sql, args):
    conn = get_connection()
    cursor = conn.cursor()
    row = cursor.execute(sql, args)
    conn.commit()
    connect_close(cursor, conn)

    return row


# 批量更新
def update_batch(sql, args):
    conn = get_connection()
    cursor = conn.cursor()
    row = None
    try:
        row = cursor.executemany(sql, args)
        conn.commit()
    except Exception as e:
        logging.error(e)
        conn.rollback()
    finally:
        connect_close(cursor, conn)
    return row


def connect_close(cursor, conn):
    cursor.close()
    conn.close()