前言

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_Oracle
2.连接数据库
3.获取cursor
4.使用cursor进行各种操作
5.关闭cursor
6.关闭连接

下面是一个简单的例子:

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

python——连接Oracle数据库的更多相关文章

  1. Python 连接 Oracle数据库

    1.环境设置 [root@oracle ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@oracle ~]# python - ...

  2. Python 连接Oracle数据库

    连接:python操作oracle数据库  python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...

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

    python连接Oracle数据库 查看Oracle版本 select * from v$version 下载对应版本的InstantClient 下载网址 InstantClient 1.解压Ins ...

  4. Python连接oracle数据库 例子一

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

  5. python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案

    操作系统,python3.5, oracle_11, 均为64位:plsql 正常连接. 也顺利安装了cx_oracle 6.3,但是python进行连接的时候就会报错"DatabaseEr ...

  6. python 连接oracle 数据库

    我们在测试中可能需要对oracle 数据库进行操纵,比如这样一个场景,在往oracle 里面插数据的同时,另一个工具从里面读,如何能保证读出来的数据是有顺序的,即:先插入进去的先读出来,根据这个场景们 ...

  7. windows下python连接oracle数据库

    1.首先安装cx_Oracle包2.解压instantclient-basic-windows.x64-11.2.0.4.0.zip到c:\oracle3.拷贝instantclient_11_2下所 ...

  8. python 连接oracle数据库:cx_Oracle

    注意:64位操作系统必须安装64位oracle客户端,否则会连接报错 安装第三方库:cx_Oracle 一.连接数据库的三种方式: 1.cx_Oracle.connect('账号/密码@ip:端口/数 ...

  9. Python连接Oracle数据库

    今天使用Python连接数据库,连接没有问题,就是中文显示乱码,网上找了很多解决方案, 最后选择使用这个 #!/usr/bin/env python # -*- coding:utf-8 -*- #A ...

随机推荐

  1. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 员工离职管理

    当公司有几万人,上千家加盟网点,几个庞大的直属分公司后,系统账户的有效管理也是一个头疼的问题,把所有的帐户及时进行科学的管理,有人员离职时及时进行记录,防止离职人员的系统账户有各种安全漏洞. 谁什么时 ...

  2. OrcharNoCMS中的发布订阅使用

    对于Orchard里面的EventBus,没有太多的文章去介绍说明.它最好的应用是发布订阅的应用. 使用介绍: 在Car模块中,我们定义一个接口,继承IEventHandler接口. 当我们在创建一条 ...

  3. Nginx负载均衡实践之一:基本实现

    由于现在的网站架构越来越大,基于互联网的用户也是日渐增长,所以传统的单机版服务器已经渐渐不能适应时代发展的需要.最近在和其他企业接触的过程中,发现对于互联网的经验尤为看重,所谓的互联网经验,其实就是指 ...

  4. Jquery揭秘系列:实现 ready和bind事件

    讲这一节之前,先回顾之前的一篇<小谈Jquery>里面的代码: (function (win) { var _$ = function (selector, context) { retu ...

  5. C 语言学习的第 05 课:C 语言基础(01)

    C语言程序中的绝大部分应该记录在以.c作为扩展名的文件里,这种文件叫做C语言    程序的源文件. C语言中还包括以.h作为扩展名的文件,这种文件叫做头文件. C语言中的四则运算: 加:+ 减:- 乘 ...

  6. B - Ignatius and the Princess IV DP

    #include<iostream> #include<vector> using namespace std; ]; int main() { int time,n,limi ...

  7. React.js常识

    1.React的特点: 简单.声明式-自动dom操作. React核心:组件,组件的设计目的:提高代码复用率,降低测试难度和代码复杂度. 提高代码复用率:组建将数据和逻辑进行封装,类似面向对象的类: ...

  8. 安装MySQL的时候遇到的错误

    这里我安装的是MySQL5.6 我遇到的错误有 (1)Warning: Bison executable not found in PATH 解决办法: yum install bison 原文摘自: ...

  9. UI: 窗口全屏, 窗口尺寸

    窗口全屏 窗口尺寸 示例1.窗口全屏UI/FullScreen.xaml <Page x:Class="Windows10.UI.FullScreen" xmlns=&quo ...

  10. SVM(支持向量机)的一点理解

    最近有被问到SVM的问题,不懂装懂,羞愧不已.百度有很多深入浅出介绍SVM的文章,我就不赘述了,这里写一点自己肤浅的理解. SVM的核心思想是把求解低维空间上的高维分类器转化为求解高维函数空间上的线性 ...