怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作

发布时间:2021-03-17 16:32:34

来源:亿速云

阅读:67

作者:Leah

本篇文章为大家展示了怎么在Python中使用cx_Oracle模块对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_NAMEimport 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。这个与调用存储过程不同之处在于,它需要指定传输参数的类型。

上述内容就是怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作相关推荐

  1. 在python中创建虚拟环境和Django对数据库的操作(一)

    一怼:横州侧畔千帆过,漏出你这个小瘪三,我劝天公重抖擞,劈死你这个王八蛋(by.阅后即瞎) 先说笔者所使用的版本,笔者使用的是django1.8.4的版本,不同版本可能有不同请按照实际情况处理,本文只 ...

  2. Symantec Backup Exec 2014 备份Exchange 2013之二安装主备服务器

    安装BE 2014的系统要求如下: 操作系统 不能在运行 Windows Server 2008/2012 的 Windows Server Core 安装选项的计算机上安Backup Exec 服务 ...

  3. python cx oracle 11g,怎么在python中使用cx_Oracle模块连接Oracle数据库

    怎么在python中使用cx_Oracle模块连接Oracle数据库 发布时间:2021-03-29 18:08:05 来源:亿速云 阅读:65 作者:Leah 怎么在python中使用cx_Orac ...

  4. 服务器 系统顺利切换 报道,一种实现主备服务器切换的方法及系统

    1.一种实现主备服务器切换的系统,其特征在于,至少包括网关,主交换机和备用交换机,与主交换机相连接的一个或一个以上主服务器,与备用交换机相连接的.与各主服务器分别完全镜像的一个或一个以上备用服务器: ...

  5. Python中通过cx_Oracle访问数据库遇到的问题总结

    以下是Python中通过cx_Oracle操作数据库的过程中我所遇到的问题总结,感谢我们测试组的前辈朱勃给予的帮助最终解决了下列两个问题: 1)安装cx_Oracle会遇到的问题:在Windows下安 ...

  6. 图文:Linux-DNS主备服务器搭建(高可用)

    DNS主服务器(master):192.168.127.147 从服务器(slave):192.168.127.148 1.首先在master和slave上安装DNS包: 2.编辑master上的DN ...

  7. python中的log模块笔记

    日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四大组件记录日志 配置logging的几种方式 向日志输出中添 ...

  8. python中日志logging模块和异常捕获traceback模块的使用

    python中日志logging模块和异常捕获traceback模块的使用 参考文章: (1)python中日志logging模块和异常捕获traceback模块的使用 (2)https://www. ...

  9. 使用python中的tkinter模块制作一个学习打卡小软件

    学习任务打卡小软件---戈多Sensei 1.制定任务 2.完成任务 3.学习评估 最近为了给我的星星⭐写一个学习记录软件,学习了一下python中的tkinter模块,做了一个可视化打卡界面,此处为 ...

最新文章

  1. android linux 内核gpl,Android 内核分析
  2. 「敏捷开发」适合什么样的团队?
  3. python 必备模块和包_Python_异常和模块
  4. c++使用Vigenere加解密文本的算法(附完整源码)
  5. 微服务网关实现用户访问权限识别拦截
  6. php智能裁剪黑边,图片裁剪去除黑边
  7. 导入自己写的类,却被标红,原因及解决方法是?(Pycharm编辑器为例)
  8. python都有哪些包装_Python基础:21包装
  9. 广东 职称英语计算机,现在评职称英语和计算机都不用考了
  10. 求n的阶乘的算法框图_算法|从阶乘计算看递归算法
  11. 百变方块java代码_多牛百变方块
  12. 【贪心】LeetCode 55. Jump Game
  13. 锐捷网络linux如何认证上网,如何在Linux里面进行锐捷认证上网
  14. 最新手机号段归属地数据库(2018年4月)
  15. SPSS数据分析流程
  16. 高瓴张磊:从学渣到投资大佬,也曾多次犯错
  17. 自考《数据库系统原理》(3)之关系模式设计理论
  18. Hdu4747 Mex 递推
  19. golang的图片操作:缩放图片+合成图片
  20. c++string 加引号_Shell 引号嵌套

热门文章

  1. laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)
  2. c++里解决“控制传输跳过的实例化”的方法
  3. torchvision学习之torchvision.datasets
  4. eclipse导入jar包的三种方法
  5. 程序猿们正在疯狂battle,看看究竟谁的算法更6
  6. Facebook广告账号主页创建时,其实还有这些小知识!
  7. 跨境电子商务独立站如何找到热门的利基市场
  8. 如何快速搭建一个属于自己的网站?
  9. java8 stream index_Java8 Stream基本使用
  10. CCF 2014-3-1 相反数