cx_Oracle 操作oracle数据库

参考 https://www.jianshu.com/p/78e6640bf4b0 安装配置cx_Oracle模块

数据库配置:
############ 测试_内网 ############
# host_name: '127.0.0.1'
# port: 8080
# service_name: 'service_name'
# username: 'username'
# password: 'password'
############ 测试_外网 ############
host_name: '127.0.0.1'
port: 8080
sid: 'sid'
username: 'username'
password: 'password'
import cx_Oracle
import os
import sys sys.setrecursionlimit(10000) # 例如这里设置为一万
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
os.environ['ORACLE_HOME'] = r'C:\Program Files\My Program Files\instantclient_12_2'
os.environ['TNS_ADMIN'] = r'C:\Program Files\My Program Files\instantclient_12_2'
# sys.path.insert(0, r'C:\Program Files\My Program Files\instantclient_12_2;') def get_yamlMsg(sql_path):
'''
open方法打开直接读出来
:param sql_path:
:return:
'''
with open(sql_path, 'r', encoding='utf-8') as f:
sqlMsg = f.read()
# 用load方法转字典
sql_dic = yaml.load(sqlMsg)
return sql_dic # 获取数据库配置文件路径
db_conf_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'conf', "application.yaml")
# 获取数据库配置信息
db_conf = get_yamlMsg(db_conf_path).get('数据库配置') ''' 公共类'''
class MyOracle(object):
def __init__(self):
self.hostname = db_conf.get('host_name')
self.port = db_conf.get('port')
self.sid = db_conf.get('sid', None)
self.service_name = db_conf.get('service_name', None)
self.username = db_conf.get('username')
self.password = db_conf.get('password') def get_connection(self):
try:
if self.service_name:
tnsname = cx_Oracle.makedsn(self.hostname, self.port, service_name=self.service_name)
else:
tnsname = cx_Oracle.makedsn(self.hostname, self.port, self.sid)
self.con = cx_Oracle.connect(self.username, self.password, tnsname)
except Exception as e:
print('连接数据库出错:', e) def get_cur(self):
return self.con.cursor() def excute_one(self, sql):
try:
cur = self.get_cur()
cur.execute(sql)
# cur.prepare('select * from t_emp a where a.empid=:id')
# cur.execute(None,{'id':id})
line = cur.fetchone()
except Exception as e:
print('数据库查询出错:', e)
cur.close()
self.con_close()
cur.close()
return line def excute_some(self, sql):
try:
cur = self.get_cur()
cur.execute(sql)
lines = cur.fetchall()
except Exception as e:
print('数据库查询出错:', e)
cur.close()
self.con_close()
cur.close()
return lines def excute(self, sql):
try:
cur = self.get_cur()
cur.execute(sql)
effectRow = cur.rowcount
except Exception as e:
print('数据库出错:', e)
cur.close()
self.con_close()
cur.close()
return effectRow def con_close(self):
self.con.close() if __name__ == '__main__':
db = MyOracle()
db.get_connection()
print(db.excute_some('''select * from dule'''))
db.con_close()

最新文章

  1. 子类继承父类时JVM报出Error:Implicit super constructor People() is undefined for default constructor. Must define an explicit constructor
  2. UVA - 10375 Choose and divide[唯一分解定理]
  3. ruby HTTPS请求
  4. reactjs学习一(环境搭配react+es6+webpack热部署)
  5. js window.open 打开新窗体 参数设置
  6. linq 多条件查询
  7. 换个心境搞IT,在IT职场如何打拼?
  8. LLVM在静态分析上的增强 @ WWDC 2013
  9. NSTimer 详细设置
  10. redis整合spring
  11. [51nod 1515] 明辨是非
  12. 微信小程序之菜鸟选手入门教学(一)
  13. JavaBean四个作用域范围
  14. bzoj3693: 圆桌会议 二分图 hall定理
  15. Effective Java 第三版——53. 明智而审慎地使用可变参数
  16. 廖雪峰Java1-2程序基础-9数组
  17. event.stopPropagation与event.preventDefault的区别
  18. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法
  19. Linux dig命令
  20. Thunder团队第五周 - Scrum会议2

热门文章

  1. 【学习】SpringBoot之简介、特点、缺点、应用场景
  2. 树莓派安装parrot linux记录
  3. win7环境下mongodb分片和移除
  4. Macpro搭建java自动化(selenium+chrome)
  5. 使用SNMP监控服务器运行情况
  6. 1.1 DAL数据访问层
  7. 基于对象的orm跨表查询再练习
  8. React事件方法、React定义方法的几种方式、获取数据、改变数据、执行方法传值
  9. Activity启动场景Task分析(二)
  10. Django ModelForm操作及验证