# -*- coding:utf-8 -*-
from django.db import connection
from django.conf import settings
import cx_Oracle
class OperateDB(object):
"""
op = OperateDB()
result = op.select(sql)
[][]
result = op.select_first(sql)
[]
del op
"""
def __init__(self):
try:
self.cursor = connection.cursor()
except cx_Oracle.Error:
raise
def __del__(self):
if self.cursor:
self.cursor.close()
def select(self, sql):
try:
self.cursor.execute(sql)
return self.cursor.fetchall()
except cx_Oracle.Error as e:
self.cursor.close()
raise
def select_first(self, sql):
try:
self.cursor.execute(sql)
return self.cursor.fetchone()
except cx_Oracle.Error as e:
self.cursor.close()
raise
class UpdateDB(object):
"""
insert update delete
帶回滾操作
注意:sql 中的date type
sql = "INSERT INTO table_name (date) values (to_date('2016-10-11', 'yyyy-mm-dd hh24:mi:ss' )"
up = UpdateDB()
up.update(sql)
up.update(sql)
up.update(sql)
up.commit()
"""
def __init__(self):
try:
self.db = cx_Oracle.Connection(settings.ROLLBACKDB)
self.db.begin()
self.cursor = self.db.cursor()
except cx_Oracle.Error as e:
raise
def update(self, sql):
try:
self.cursor.execute(sql)
except Exception as e:
self.db.rollback()
self.cursor.close()
self.db.close()
raise
def commit(self):
self.db.commit()
self.cursor.close()
self.db.close()