参考链接: Python中的Oracle数据库连接

前言

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. 使用流程

简单的使用流程如下:

1.引用模块cx_Oracle2.连接数据库3.获取cursor4.使用cursor进行各种操作5.关闭cursor6.关闭连接

下面是一个简单的例子:

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()                                              #关闭连接

3. 几种用法

Python对数据库的操作主要有2方面:一个是写数据,一个是读数据。这2个方面的实现可以通过SQL语句实现,也可以通过存储过程实现。所以cx_Oracle的主要用法有:

1. 执行SQL语句

2. 调用存储过程和函数。

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数据库上进行数据的进一步分析。

转载于:https://www.cnblogs.com/zhizhou/p/3288108.html

[转载] python——连接Oracle数据库相关推荐

  1. Python连接Oracle数据库,以字典形式返回结果

    众所周知,Python连接Oracle数据库,一般都使用cx_Oracle这个包. 但关键是cx_Oracle这个包,返回的结果,都是元组或者列表. 如以下代码: 1 import cx_Oracle ...

  2. Python 技术篇-连接oracle数据库并执行sql语句实例演示,python连接oracle数据库oci详细配置方法

    Python 连接 Oracle 数据库 第一章:连接 oracle 数据与环境配置 ① 连接 oracle 数据库效果演示 ② oci 下载 ③ oci 配置 ④ 环境变量配置 ⑤ 检测是否有 or ...

  3. 【Oracle】Python 连接Oracle 数据库

    From: http://space.itpub.net/22664653/viewspace-711728 Python 连接Oracle 数据库,需要使用cx_Oracle 包. 1 下载cx_O ...

  4. python连接本机oracle数据库吗,用Python连接Oracle数据库容易吗?

    ello,大家好!本次介绍的内容是如何使用Python连接Oracle数据库!看起来很简单,但实际上就是这么简单.学习本节内容后,相信老铁们能用Python撸起你们那庞大的Oracle数据库了.Wel ...

  5. python连接oracle数据库 插入clob类型数据

    python连接oracle数据库 插入clob类型数据 连接数据库 import cx_Oracle as cx #导入模块 con = cx.connect('root', 'root123', ...

  6. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解

    本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://pypi.python.org/pypi/cx_Ora ...

  7. python连接oracle数据库_深入理解Python3.6连接Oracle数据库

    Python3.6连接Oracle数据库的方法详解 本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://p ...

  8. python连接oracle数据库_Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

  9. linux python连接oracle数据库_Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法...

    本文档主要描述了Linux下python数据库驱动的安装和配置,用来实现在Linux平台下通过python访问MySQL.Oracle.SQL Server数据库. 其中包括以下几个软件的安装及配置: ...

最新文章

  1. php消除连续字符,JS字符串去除连续或全部重复字符的实例
  2. java接口深入理解,深入理解Java接口
  3. Leetcode 171. Excel表列序号 解题思路及C++实现
  4. Python 基础篇-正斜杠(/)和反斜杠(\)的用法
  5. 使用Postman 传递arraylist数据给springboot
  6. rust(66)-rust智能指针与类型转换
  7. C++类对象排序operator重载操作
  8. 基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现
  9. 把一个 ASP.NET 程序转换为了 Web Services
  10. 【C/C++】C++98基础上的C++11新特性
  11. Clean Code 《代码整洁之道》前四章读书笔记
  12. ydisk安卓版本_Y Disk HD
  13. iPhone XS Max A2101(D3XP X1048 MLB P1 D33P) 820-01225 苹果手机点位图
  14. python-指数分布介绍(scipy.stats.expon)
  15. windows php进程数,win10的进程数应该多少?
  16. Arcgis10.0安装遇到错误1935
  17. c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点
  18. 文言文不好玩,16岁高中生开发粤语编程项目
  19. 使用Dism命令对Win7镜像进行操作
  20. docker-将自己的Linux打包为镜像

热门文章

  1. 【PAT (Basic Level) Practice (中文)】1029 旧键盘 (20分)
  2. 【基础】基础算法学习笔记(状态空间)
  3. 人工智能建立本体库_本体:一文读懂领域本体构建
  4. hdu 4496 并查集
  5. MySQL48道经典基础面试题(包含各个方面)
  6. LL(1)文法与其对应的FOLLOW,SELECT和FIRST集
  7. 递归法:快速掌握递归核心方法
  8. bzoj 1263: [SCOI2006]整数划分
  9. bzoj 2351: [BeiJing2011]Matrix(二维Hash)
  10. pytorch中lr_scheduler的使用