python oracle数据库操作_Python 封装 Oracle 数据库操作(使用类封装基本的增删改查)...

前面2篇看了SQLite和Mysql数据库的封装,这篇看下Oracle的封装.

Python 封装 SQLite 数据库操作(使用类封装基本的增删改查)

Python 封装 MySQL 数据库操作(使用类封装基本的增删改查)

# -*- coding: utf-8 -*-

import cx_Oracle

import datetime

class MyOracle:

SHOW_SQL = True

def __init__(self, host='127.0.0.1', port=1521, user='system', password='oracle', sid='cndba'):

self.host = host

self.port = port

self.user = user

self.password = password

self.sid = sid

def get_con(self):

try:

dsn_tns = cx_Oracle.makedsn(self.host, self.port, self.sid)

# 如果是Oracle 12c 数据库需要替换sid 为service_name

dsn_tns = dsn_tns.replace('SID', 'SERVICE_NAME')

conn = cx_Oracle.connect(self.user, self.password, dsn_tns)

return conn

except cx_Oracle.Error, e:

print "cx_Oracle Error:%s" % e

def select_all(self, sql):

try:

con = self.get_con()

# print con

cur = con.cursor()

cur.execute(sql)

fc = cur.fetchall()

return fc

except cx_Oracle.Error, e:

print "cx_Oracle Error:%s" % e

finally:

cur.close()

con.close()

def select_by_where(self, sql, data):

try:

con = self.get_con()

# print con

d = (data,)

cur = con.cursor()

cur.execute(sql, d)

fc = cur.fetchall()

# if len(fc) > 0:

# for e in range(len(fc)):

# print(fc[e])

return fc

except cx_Oracle.Error, e:

print "cx_Oracle Error:%s" % e

finally:

cur.close()

con.close()

def dml_by_where(self, sql, params):

try:

con = self.get_con()

cur = con.cursor()

for d in params:

if self.SHOW_SQL:

print('执行sql:[{}],参数:[{}]'.format(sql, d))

cur.execute(sql, d)

con.commit()

except cx_Oracle.Error, e:

con.rollback()

print "cx_Oracle Error:%s" % e

finally:

cur.close()

con.close()

# 不带参数的更新方法

def dml_nowhere(self, sql):

try:

con = self.get_con()

cur = con.cursor()

count = cur.execute(sql)

con.commit()

return count

except cx_Oracle.Error, e:

con.rollback()

print "cx_Oracle Error:%s" % e

finally:

cur.close()

con.close()

# 开始测试函数

def select_all():

sql = "select * from dave"

fc = db.select_all(sql)

for row in fc:

print row

def select_by_where():

sql = "select * from dave where USER_ID=:1"

data = 0551

fc = db.select_by_where(sql, data)

for row in fc:

print row

def ins_by_param():

sql = "insert into dave(USERNAME,USER_ID,CREATED) values(:1,:2,:3)"

date = datetime.datetime.now()

data = [('http://www.cndba.cn', 0551, date), ('http://www.cndba.cn/dave', 0556, date)]

db.dml_by_where(sql, data)

def del_by_where():

sql = "delete from dave where USERNAME = :1 and USER_ID=:2"

data = [('HR', 107)]

db.dml_by_where(sql, data)

def update_by_where():

sql = "update dave set USER_ID=:1 where USER_ID=:2"

data = [(0551, 0556)]

db.dml_by_where(sql, data)

def del_nowhere():

sql = "delete from dave"

print db.dml_nowhere(sql)

if __name__ == "__main__":

db = MyOracle( '192.168.1.4', port=1521, user='system', password='www.cndba.cn', sid='cndba')

# ins_by_param()

# del_by_where()

# update_by_where()

# del_nowhere()

# select_all()

# del_by_where()

# ins_by_param()

del_nowhere()

select_by_where()

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

https://www.cndba.cn/dave/article/2172

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值