在工作中经常会使用python连接常见的数据库编写python脚本,用于数据分析中一些过程表的清洗与汇总操作,为了方便现将常见的数据库的操作封装在一起,方便调用使用,Spark连接操作后期补充欢迎指正。
import sys
import logging
import pymysql
import cx_Oracle
from pyhive import sqlalchemy_hive, hive
from clickhouse_driver import Client
# from pyspark.sql import HiveContext
# from pyspark import SparkConf, SparkContext
# 加入日志
# 获取logger实例
logger = logging.getLogger("dbSql")
# 指定输出格式
formatter = logging.Formatter('%(asctime)s %(levelname)-8s:%(message)s')
# 文件日志
file_handler = logging.FileHandler("dbSql.log")
file_handler.setFormatter(formatter)
# 控制台日志
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# 为logge添加具体的日志处理器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logger.setLevel(logging.INFO)
class DbConnect(object):
"""
封装Mysql/Oracle/Hive/Clickhouse数据库基本操作函数
"""
__slots__ = ('_host', '_user', '_password', '_port', '_database', 'conn', 'cursor')
def __init__(self, host, user, password, port, database):
"""
魔术方法, 初始化, 构造函数
:param host: IP
:param user: 用户名
:param password: 密码
:param port: 端口号
:param database: 数据库名
"""
self._host = host
self._user = user
self._password = password
self._port = port
self._database = database
self.conn = None
self.cursor = None