使用pymysql模块进行封装,自动化不可或缺的数据库校验

import pymysql
import os
import sys
from Common.plugs.get_config import r_config
from Common.plugs.get_log import Log

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

if sys.platform == "win32":
    ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini').replace('/', '\')
else:
    ENV_CONF_DIR = os.path.join(BASE_DIR, 'Common/conf/env_config.ini')

log_path = r_config(ENV_CONF_DIR, "log", "log_path")
database_info = r_config(ENV_CONF_DIR, 'DB', 'database')

logger = Log(log_path)


class MysqlConnect:
    def __init__(self, host, port, user, password, database):
        '''
        建立数据库连接并创建字典类型游标
        '''
        try:
            logger.info("准备连接数据库")
            logger.info("连接信息:host:{0}, port:{1}, user:{2}, password:{3}, database:{4}".format(host, port, user, password,
                                                                                           database))
            self.db = pymysql.connect(host=host, #主机名
                                      user=user, #用户名
                                      password=password, #密码
                                      port=port, #端口
                                      database=database,#所要连接的数据库
                                      charset='utf8') #字符集
            logger.info("连接数据库成功")
            self.cursor = self.db.cursor() #创建游标
        except Exception as e:
            logger.error("连接数据库失败:{0}".format(str(e)))

    # 将要插入的数据写成元组传入
    def exec_data(self, sql, data=None):
        self.cursor.execute(sql, data)
        self.db.commit()
        self.cursor.close()
        self.db.close()

    # sql拼接时使用repr(),将字符串原样输出
    def exec(self, sql):
        self.cursor.execute(sql)
        self.db.commit()

    def select(self, sql):
        try:
            logger.info("开始查询数据")
            self.cursor.execute(sql)
            result = self.cursor.fetchall() #获取查询结果
            logger.info("查询成功")
            return result
        except Exception as e:
            logger.error("查询数据失败:{0}".format(str(e)))


    # def __del__(self):
    #     self.cursor.close()
    #     self.db.close()

    def close_db(self):
        self.cursor.close() #关闭游标
        self.db.close() #关闭数据库连接


if __name__ == '__main__':
    # mc = MysqlConnect('127.0.0.1',3306 'root', '123456', 'itcast')
    # mc.exec('insert into test(id, text) values(%s, %s)' % (1, repr('哈送到附近')))
    # mc.exec_data('insert into test(id, text) values(%s, %s)' % (1, repr('哈送到附近')))
    # # mc.exec_data('insert into test(id, text) values(%s, %s)',(13, '哈送到附近'))
    # ret = mc.select('select * from sp_manager where mg_name like "l%" ')
    # print(ret[0][0])
    # print(ret)

    mc = MysqlConnect(eval(database_info)['host'],
                      eval(database_info)['port'],
                      eval(database_info)['user'],
                      eval(database_info)['password'],
                      eval(database_info)['db'])
    ret = mc.select('select * from sp_manager where mg_name = "admin" ')
    print(ret)
    print(type(ret))
    pass
原文地址:https://www.cnblogs.com/hghua/p/13145148.html