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()

cx_Oracle 操作oracle数据库的更多相关文章

  1. Python中通过cx_oracle操作ORACLE数据库的封闭函数

    哈哈,看来我的SQL自动化发布,马上就全面支持ORACLE,MYSQL,POSTGRESQL,MSSQL啦... http://blog.csdn.net/swiftshow/article/deta ...

  2. Python使用cx_Oracle模块连接操作Oracle数据库

    1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...

  3. Python操作Oracle数据库:cx_Oracle

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  4. Python使用cx_Oracle模块操作Oracle数据库--通过sql语句和存储操作

    https://www.jb51.net/article/125160.htm?utm_medium=referral  Python使用cx_Oracle调用Oracle存储过程的方法示例 http ...

  5. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

  6. python接口自动化测试框架实现之操作oracle数据库

    python操作oracle数据库需要使用到cx-oracle库. 安装:pip install cx-oracle python连接oracle数据库分以下步骤: 1.与oracle建立连接: 2. ...

  7. ASP.NET操作ORACLE数据库之模糊查询

    ASP.NET操作ORACLE数据库之模糊查询 一.ASP.NET MVC利用OracleHelper辅助类操作ORACLE数据库 //连接Oracle数据库的连接字符串 string connect ...

  8. Java操作Oracle数据库以及调用存储过程

    操作Oracle数据库 publicclass DBConnection {     //jdbc:oracle:thin:@localhost:1521:orcl     publicstaticf ...

  9. PHP操作Oracle数据库

    原文出处 (这是来自“百度文库”中的文章写得很不错) PHP操作Oracle数据库(OCI数据抽象层)OCI(Oracle 8 Call-Interface)是PHP中内置的数据库抽象层函数.下面针对 ...

随机推荐

  1. 第十一周Java学习总结。

    java UI 图形界面知识梳理: ATM: 在整个AWT包中提供的所有工具类主要分为以下3种. (1)组件:Component. (2)容器:Container. (3)布局管理器:LayoutMa ...

  2. node 常用模块

    像在服务器上的操作,我们只要 require 引入的模块,只要不是 nodejs 中的模块,我们的下载环境都是开发环境 配置自动化:引用插件 nodemon 下载:npm i nodemon -g  ...

  3. 解决phpmyadmin出现: Maximum execution time of 300

    在mysql用phpmyadmin导入数据的时候出现: Fatal error: Maximum execution time of 300 seconds exceeded in ... 上网查了很 ...

  4. IntentService和HandlerThread

    上一篇说了说android 系统的UI更新机制.核心点围绕在Looper的使用上.主线程运行起来后,初始化并运行一个静态Looper,H类(handler子类)处理各种事件. 16ms的UI upda ...

  5. UVa679 小球下落(树)

    UVa679 小球下落(树) 题目大意 小球从一棵所有叶子深度相同的二叉树的顶点开始向下落,树开始所有节点都为0.若小球落到节点为0的则往左落,否则向右落.并且小球会改变它经过的节点,0变1,1变0. ...

  6. 方法二:Excel 2016 VBA工程密码破解

    将你要破解的Excel文件关闭,切记一定要关闭呀!然后新建一个Excel文件 打开新建的这个Excel,按下alt+F11,打开vb界面,新建一个模块,如图所示 将代码复制到这个模块中,代码如下:Pr ...

  7. swiper 的左右箭头放到轮播外面

    <!-- 增加一个father的包裹 --> <div class="swiper-father"> <div class="swiper- ...

  8. linux常用命令(22)gzip命令

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...

  9. java:Springmvc框架3(Validator)

    1.springmvcValidator: web.xml: <?xml version="1.0" encoding="UTF-8"?> < ...

  10. Smartform给文本绑定值

    点击字段显示器, 然后把字段拖过去即可