leave island

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

主要讲下3个工具

一、日志类工具

功能:自动化运行打印日志

日志级别                 setLevel(logging.DEBUG或INFO ERROR),一般为INFO

生成文件命名格式   datetime.now().strftime("%Y-%m-%d"),如果是按时分秒,()可以加%H%M%S

其他按默认即可

# -*- coding:utf-8 -*-
import logging
from datetime import datetime
import os


class LogUtil():
    def __init__(self, logname=None):
        # 日志名称
        self.logger = logging.getLogger(logname)
        # 日志级别
        self.logger.setLevel(logging.DEBUG)
        # 日志输出到控制台
        self.console = logging.StreamHandler()
        self.console.setLevel(logging.DEBUG)
        # 输出到文件
        self.date = datetime.now().strftime("%Y-%m-%d") + '.log'
        self.filename = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'logs', self.date)
        self.file = logging.FileHandler(self.filename, encoding='utf-8')
        self.file.setLevel(logging.DEBUG)
        # 日志显示内容
        self.formatstr = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s'
        self.format = logging.Formatter(self.formatstr)
        self.console.setFormatter(self.format)
        self.file.setFormatter(self.format)
        # 加入到hander
        self.logger.addHandler(self.console)
        self.logger.addHandler(self.file)

    def get_logger(self):
        return self.logger

 

二、数据库操作类

目前支持mysql和oracle的数据操作

由于mysql和oracle的增删查改操作方法一致,所以方法统一放置在DataBase类里了

但游标conn获取方式不一致,通过OracleDataBase和MysqlDataBase类区别获取

# -*- coding:utf-8 -*-
from utils.log_util import LogUtil
from utils.yaml_util import YamlUtil
import pymysql
import cx_Oracle

logger = LogUtil('database_util').getLogger()

class DataBase(object):
    def __init__(self):
        pass

    def queryDataBase(self, querySql):
        # 获取游标
        try:
            cursor = self.con.cursor()
            cursor.execute(querySql)
            return cursor.fetchone()[0]
        except Exception as e:
            logger.error(e)
        finally:
            self.con.close()

    def updateData(self, querySql):
        # 修改数据库数据
        try:
            cursor = self.con.cursor()
            cursor.execute(querySql)
            self.con.commit()
        except Exception as e:
            self.con.rollback()
            logger.error(e)
        finally:
            self.con.close()


class OracleDataBase(DataBase):
    def __init__(self):
        sysConfig = YamlUtil('sysconfig.yaml').readYaml()
        host = sysConfig['oralceConfig']['host']
        port = sysConfig['oralceConfig']['port']
        user = sysConfig['oralceConfig']['username']
        pwd = sysConfig['oralceConfig']['password']
        database = sysConfig['oralceConfig']['database']
        self.con = cx_Oracle.connect("{}/{}@{}:{}/{}".format(user, pwd, host, port, \
                                                             database).format(), encoding="UTF-8", nencoding="UTF-8")

class MysqlDataBase(DataBase):
    def __init__(self):
        sysConfig = YamlUtil('sysconfig.yaml').readYaml()
        host = sysConfig['mysqlConfig']['host']
        port = sysConfig['mysqlConfig']['port']
        user = sysConfig['mysqlConfig']['username']
        pwd = sysConfig['mysqlConfig']['password']
        database = sysConfig['mysqlConfig']['database']
        self.con = pymysql.Connect(
            host=host,
            port=port,
            user=user,
            passwd=pwd,
            db=database,
            charset='utf8'
        )

if __name__ == "__main__":
    pass

 

三、时间操作类

按格式获得时间,目前支持年月日时分秒 以及 年-月-日返回

可自行扩展

# -*- coding:utf-8 -*-
from datetime import datetime


class DateTimeUtil(object):
    def __init__(self):
        pass

    def get_current_time(self):
        return datetime.now().strftime("%Y%m%d%H%M%S")

    def get_current_date(self):
        return datetime.now().strftime("%Y-%m-%d")

if __name__=="__main__":
    dateTime = DateTimeUtil()
    print(dateTime.get_current_time())

 

posted on 2020-12-17 14:21  恒-星  阅读(320)  评论(0编辑  收藏  举报