from pathlib import Path
import configparser
import os
import pymysql
import redis


class 读取数据:
    def __init__(self, 配置名):
        当前_目录 = Path(__file__).resolve().parent
        self.读取配置 = 配置名
        self.配置数据 = configparser.ConfigParser()
        if os.access(os.path.join(当前_目录, "../非公开数据/配置.ini"), os.F_OK):
            self.配置数据.read(os.path.join(当前_目录, "../非公开数据/配置.ini"), encoding="utf-8-sig")
        else:
            self.配置数据.read(os.path.join(当前_目录, "../数据/配置.ini"), encoding="utf-8-sig")

    def 读取参数(self, 参数名):
        return self.配置数据.get(self.读取配置, 参数名)


def 连接数据库(配置名="数据库", 游标=True):
    配置数据 = 读取数据(配置名)
    数据库连接 = pymysql.connect(
        host=配置数据.读取参数('地址'),
        port=int(配置数据.读取参数('端口')),
        db=配置数据.读取参数('数据库'),
        user=配置数据.读取参数('用户名'),
        passwd=配置数据.读取参数('密码'),
        charset='utf8'
    )
    if 游标:
        return 数据库连接.cursor()
    else:
        return 数据库连接


def 缓存数据库(使用数据库="0", 配置名="redis", 带解码严格模式=True):
    配置数据 = 读取数据(配置名)
    if 带解码严格模式:
        r = redis.StrictRedis(
            host=配置数据.读取参数("地址"),
            port=配置数据.读取参数("端口"),
            password=配置数据.读取参数("密码"),
            decode_responses=True
        )
    else:
        r = redis.Redis(
            host=配置数据.读取参数("地址"),
            port=配置数据.读取参数("端口"),
            password=配置数据.读取参数("密码"),
            db=使用数据库
        )
    return r


if __name__ == '__main__':
    # 缓存数据 = 缓存数据库()
    # print(缓存数据.keys()[0].decode())
    pass
