为方便数据库的链接将oracle、mysql数据库进行了整合,特别注意oracle数据库需要安转oracle的客户端,并设置环境变量才可用!
# -*- coding:utf-8 -*-
import pyodbc
import pymysql
import cx_Oracle
from recordlog import recordlog
class DatabaseTool(object):
def __init__(self, host, port, username, password, dbname):
# 数据库IP地址
self.host = host
# 数据库端口
self.port = port
# 数据库用户名
self.username = username
# 数据库密码
self.password = password
# 数据库实例名
self.dbname = dbname
rdlog = recordlog()
self.s_log, self.f_log = rdlog.return_logers()
self.f_log.debug("数据库配置信息!")
self.f_log.debug("数据库IP地址: " + self.host)
self.f_log.debug("数据库端口: " + self.port)
self.f_log.debug("数据库用户名: " + self.username)
self.f_log.debug("数据库密码: " + self.password)
self.f_log.debug("数据库实例名: " + self.dbname)
# MySQL连接方法
def mysqlConnect(self):
try:
# 赋值连接
self.f_log.info("MySQL Connection start!")
self.connection = pymysql.connect(host=self.host, port=self.port, user=self.username, password=self.password, db=self.dbname, charset='gbk', cursorclass=pymysql.cursors.DictCursor)
except Exception as e:
self.f_log.info("MySQL Connection Fail")
self.f_log.error(str(e))
return False
else:
self.f_log.info('MySQL Connection Success')
# 赋值游标
self.cursor = self.connection.cursor()
return True
# Oracle连接方法
def oracleConnect(self):
# 拼接连接字符串
connString = self.username + '/' + self.password + '@' + self.host + ':' + self.port + '/' + self.dbname
try:
# 赋值连接
self.f_log.info("Oracle Connection start!")
self.connection=cx_Oracle.connect(connString)
except Exception as e:
self.f_log.info('Oracle Connection Fail')
self.f_log.error(str(e))
return False
else:
self.f_log.info('Oracle Connection Success')
# 赋值游标
self.cursor = self.connection.cursor()
return True
# SqlServer连接方法
def sqlServerConnect(self):
# 拼接IP和端口
server = self.host + ',' + self.port
# 定义连接字符串
connString = 'DRIVER={SQL Server Native Client 10.0};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s'
# 替换关键参数
connString = connString%(server, self.dbname, self.username, self.password)
try:
# 赋值连接
self.f_log.info('sqlServer Connection start')
self.connection = pyodbc.connect(connString)
except Exception as e:
self.f_log.info('sqlServer Connection Fail')
self.f_log.error(str(e))
return False
else:
self.f_log.info('sqlServer Connection Success')
# 赋值游标
self.cursor = self.connection.cursor()
return True
# 关闭连接
def close_Database(self):
self.f_log.info('DataBase Connection Closed')
self.connection.close()
# 获取一条数据
def sql_One_DQL(self, sql):
try:
self.f_log.info("开始查询数据!查询sql:" + sql)
self.cursor.execute(sql)
# 获取一条数据
result = self.cursor.fetchone()
self.f_log.info("查询数据成功!")
self.f_log.debug(result)
except Exception as e:
self.f_log.debug("获取一条数据失败!")
self.f_log.debug("报错:" + str(e))
return False
# 返回数据
return result
# 获取所有数据
def sql_All_DQL(self, sql):
# 执行sql
try:
self.f_log.info("开始查询数据!查询sql:" + sql)
self.cursor.execute(sql)
# 获取一条数据
result = self.cursor.fetchall()
self.f_log.info("查询数据成功!")
self.f_log.debug(result)
except Exception as e:
self.f_log.debug("获取全部数据失败!")
self.f_log.debug("报错:" + str(e))
return False
# 返回数据
return result
# 增删改
def sql_DML(self, sql):
# 执行sql
self.cursor.execute(sql)
# 提交
self.connection.commit()
self.f_log.info('Executed Success')
# 析构函数
def __del__(self):
# 删除对象
class_name = self.__class__.__name__