1.[代码][Python]代码
#coding=utf-8
'''
oracle 数据库操作封装 by zhengyangbo 20160329
'''
import sys
import config
import cx_Oracle
from datetime import datetime
from DBUtils.PooledDB import PooledDB
class Ora():
__pool = None #连接池对象
def __init__(self,db_info=None):
#连接池方式
self.db_info = db_info
self.conn = Ora.__getConn(db_info)
self.cursor = self.conn.cursor()
@staticmethod
def __getConn(db_info):
#静态方法,从连接池中取出连接
if Ora.__pool is None:
__pool = PooledDB(cx_Oracle,
user = db_info['user'],
password = db_info['pwd'],
dsn = "%s:%s/%s" %(db_info['host'],db_info['port'],db_info['sid']),
mincached=20,
maxcached=200)
return __pool.connection()
#查询表的所有列
def columns(self,table):
sql = ["select lower(column_name)column_name \
from user_tab_columns where table_name=upper('%(table)s')"]
rows = self.query(''.join(sql) % locals())
col_list = [k["column_name"] for k in rows]
#['sjhm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'status']
return col_list
#根据表自动创建参数字典
def create_params(self,table,args = {}):
col_list = self.columns(table)
params = {}
for k in col_list:
if args.has_key(k):
params[k] = args[k]
return params
#执行sql
def execute(self, sql, args = {}):
try:
return self.cursor.execute(sql, args)
except Exception,e:
self.close()