Python使用cx_Oracle模块操作Oracle数据库详解
这篇文章主要介绍了Python使用cx_Oracle模块操作Oracle数据库,结a合实例形式较为详细的分析了cx_Oracle模块的下载、安装及针对Orcle数据库的连接、执行SQL语句、存储过程等相关操作技巧,需要的朋友可以参考下
本文实例讲述了Python使用cx_Oracle模块操作Oracle数据库。分享给大家供大家参考,具体如下:
ORACLE_SID参数,这个参数是操作系统中用到的,它是描述我们要默认连接的数据库实例,对于一个机器上有多个实例的情况下,要修改后才能通过 conn / as sysdba连接,因为这里用到了默认的实例名。
简而言之,打个比方,你的名字叫小明,但是你有很多外号。你父母叫你小明,但是朋友都叫你的外号。
这里你的父母就是oracle实例,小明就是sid,service name就是你的外号。
sid用于实例区分各个数据库,service name用于外部链接。 它们可能是不同的,要注意你得到的是哪个名字,合理使用,否则远程连接别的数据库可能出错。
前言
Python自带的模块中有很多操纵文件的。我们可以把文件的数据读出来,经过处理还可以将数据写入文件中。但是对于数据的管理和分析来说,数据库还是专业一些。如果Python能和数据库结合在一起,那么就能结合两种的优势,提高效率。
工作中使用的是Oracle数据库,Python有一个模块cx_Oracle可以与Oracle相连。要使用cx_Oracle,就要先下载。
1. 下载cx_Oracle
Python一个官方网站PyPI,上面有丰富的模块。cx_Oracle就可以在PyPI中下载。打开PyPI的网址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到该模块,其下载地址为http://cx-oracle.sourceforge.net/。当然也可以通过其它的途径下载。
下载之后就可以使用了。
2. 使用流程
简单的使用流程如下:
①.引用模块cx_Oracle
②.连接数据库
③.获取cursor
④.使用cursor进行各种操作
⑤.关闭cursor
⑥.关闭连接
下面是一个简单的例子:
cx_Oracle.connect("用户名 / 密码@ Oracle服务器IP / Oracle的SERVICE_NAME")
获得 Oracle的SERVICE_NAME:
su - oracle #切换至oracle用户
env | grep ORACLE #查询ORACLE的环境变量
ORACLE_SID=benguo # benguo就是SERVICE_NAME
import cx_Oracle #引用模块cx_Oracle conn=cx_Oracle.connect('load/123456@localhost/ora11g') #连接数据库 c=conn.cursor() #获取cursor x=c.execute('select sysdate from dual') #使用cursor进行各种操作 x.fetchone() c.close() #关闭cursor conn.close() #关闭连接
例子:
#coding:utf-8 import cx_Oracle def main(): conn = cx_Oracle.connect("zebra/zebra@192.168.0.113/benguo") cur =conn.cursor() r= cur.execute("select * from userinfo") print print r.fetchone() if __name__ == '__main__': main()
3. 几种用法
Python对数据库的操作主要有2方面:一个是写数据,一个是读数据。这2个方面的实现可以通过SQL语句实现,也可以通过存储过程实现。所以cx_Oracle的主要用法有:
①. 执行SQL语句
②. 调用存储过程和函数。
4. 执行SQL语句
执行SQL语句很简单,从上面的例子就可以看出。使用cursor.execute
即可执行。使用fetchone或fetchall即可将执行结果读出来。
下面一个例子是Insert语句,使用的变量绑定。
import cx_Oracle conn=cx_Oracle.connect('load/123456@loaclhost/ora11g') c=conn.cursor() x=c.execute('insert into demo(v) values(:1)',['nice']) conn.commit(); c.close() conn.close()
变量绑定和Oracle的动态SQL一样,都是冒号将占位符,即代码中的:1,对变量的复制就是传入一个List,即代码中的['nice']。有多少个变量,list中就应该对应多少个值,数目要一致,否则会报错。
执行之后,可以使用连接的一个方法connect.commit()
,将事务提交。
5. 调用存储过程和方法
直接上代码:
--存储过程代码: CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS BEGIN V2 := V1; END;
#Python代码: import cx_Oracle conn=cx_Oracle.connect('load/123456@localhost/ora11g') c=conn.cursor() str1='nice' str2=' '#需要有值,即len(str2)>=len(str1) x=c.callproc('p_demo',[str1,str2]) print(str2) c.close() conn.close()
调用存储过程使用的是cursor.callproc
方法。上面的存储过程中,一个变量的值是OUT型的,在Python中,对OUT型的变量赋值,主要该变量的长度不能小于存储过程中的。
--函数代码: CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS BEGIN RETURN V1; END;
#Python代码: import cx_Oracle conn=cx_Oracle.connect('load/123456@localhost/ora11g') c=conn.cursor() str1='nice' str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1]) print(str2) c.close() conn.close()
调用函数使用的方法是cursor.callfunc
。这个与调用存储过程不同之处在于,它需要指定传输参数的类型。
结束
通过cx_Oracle,可以是Python与Oracle数据库相互沟通,这样两者就可以长处互补。
比如,可以将Python当成一个数据收集的工具,可以从Web,从文件中获取数据,然后将这些数据保存到Oracle数据库中,在Oracle数据库上进行数据的进一步分析。
相关推荐:
python使用openpyxl库修改excel表格数据方法
以上是Python使用cx_Oracle模块操作Oracle数据库详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

要获得 Redis 登录权限,需要执行以下步骤:1. 创建一个用户名和密码;2. 允许远程连接;3. 重启 Redis 服务器;4. 使用 Redis CLI 或编程语言连接。

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

通过以下步骤连接 phpMyAdmin 至 Oracle 数据库:1. 安装 Oracle 驱动程序;2. 创建数据库连接,包括主机、用户名、密码、端口和类型;3. 保存设置以建立连接;4. 从 phpMyAdmin 中选择连接的 Oracle 数据库即可管理和使用它。

启动 Redis 服务器的步骤包括:根据操作系统安装 Redis。通过 redis-server(Linux/macOS)或 redis-server.exe(Windows)启动 Redis 服务。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令检查服务状态。使用 Redis 客户端,如 redis-cli、Python 或 Node.js,访问服务器。

远程连接Oracle需配置监听器、服务名及网络。1. 客户端请求经监听器转发至数据库实例;2. 实例验证身份后建立会话;3. 使用SQL*Plus连接需指定用户名/密码、主机名、端口号及服务名,确保客户端能访问服务器且配置一致。连接失败时,检查网络连接、防火墙、监听器及用户名密码,ORA-12154错误则检查监听器和网络配置。 高效连接需使用连接池、优化SQL语句及选择合适的网络环境。

创建Oracle数据库并非易事,需理解底层机制。1. 需了解数据库和Oracle DBMS的概念;2. 掌握SID、CDB(容器数据库)、PDB(可插拔数据库)等核心概念;3. 使用SQL*Plus创建CDB,再创建PDB,需指定大小、数据文件数、路径等参数;4. 高级应用需调整字符集、内存等参数,并进行性能调优;5. 需注意磁盘空间、权限和参数设置,并持续监控和优化数据库性能。 熟练掌握需不断实践,才能真正理解Oracle数据库的创建和管理。

要从 Redis 中读取数据,可按以下步骤执行:1. 连接到 Redis 服务器;2. 使用 get(key) 获取键的值;3. 若需字符串值,解码二进制值;4. 使用 exists(key) 检查键是否存在;5. 使用 mget(keys) 获取多个值;6. 使用 type(key) 获取数据类型;7. Redis 还有其他读取命令,例如:获取匹配模式的所有键、使用游标迭代键和对键的值进行排序。
