Python安装cx_oracle操作

Posted 快乐女孩824

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python安装cx_oracle操作相关的知识,希望对你有一定的参考价值。

1.cx_Oracle概述

cx_Oracle是一个Python 扩展模块,通过使用所有数据库访问模块通用的数据库 API来实现 Oracle 数据库的查询和更新。为使用一些专为 Oracle 设计的特性,还加入了多个通用数据库 API 的扩展。cx_Oracle 的开发历时多年,涵盖了大多数需要在 Python 中访问 Oracle 的客户的需求。

安装cx_Oracle使用pip命令: pip install cx_Oracle

2.连接oracle数据库

cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

cx_Oracle.connect('scott/scott@127.0.0.1:1521/orcl')

3.ORACLE的查询

#简单查询

import cx_Oracle

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

sql_cmd='SELECT * FROM students'

db_cursor.execute(sql_cmd)

for row in  db_cursor:

    print(row)

db_cursor.close()

db_conn.close()

#带参数查询

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

sql_cmd='SELECT * FROM students where ID = :id'

sql_p_id='id':2

db_cursor.execute(sql_cmd,sql_p_id)

for row in  db_cursor:

    print(row)

db_cursor.close()

db_conn.close()

#获取单行可以使用fetchone函数;获取多行记录,可以使用fetchall函数

import cx_Oracle

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

sql_cmd='SELECT * FROM students'

db_cursor.execute(sql_cmd)

print(db_cursor.fetchone())

db_cursor.close()

db_conn.close()

4.ORACLE的DML

import cx_Oracle

from datetime import datetime

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

sql_cmd = 'INSERT INTO students(id, name, age,birth) VALUES(:id, :name, :age,:birth)'

db_cursor.execute(sql_cmd,(11,'王五2',12,datetime(2017,9,1,12,40,12)))

db_cursor.execute(sql_cmd,(22,'赵六',12,datetime(2017,9,1,12,40,12)))

db_conn.commit()

db_cursor.close()

db_conn.close()

import cx_Oracle

from datetime import datetime

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

sql_cmd = 'INSERT INTO students(id, name, age,birth) VALUES(:id, :name, :age,:birth)'

db_cursor.executemany(sql_cmd, [(15, '王五2', 12, datetime(2017, 9, 1, 12, 40, 12)),(16, '赵六', 12, datetime(2017, 9, 1, 12, 40, 12))])

db_conn.commit()

db_cursor.close()

db_conn.close()

5.调用存储过程和函数

--存储过程代码:

CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS

BEGIN

  V2 := V1;

END;

  

#Python代码:

import cx_Oracle

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

str='abdd'

msg =db_cursor.var(cx_Oracle.STRING)

db_cursor.callproc('p_demo',[str,msg])

db_conn.commit()

print(msg)

print(msg.getvalue())

db_cursor.close()

db_conn.close()

 

--函数代码:

CREATE OR REPLACE function F_DEMO(V1 VARCHAR2,V2 VARCHAR2) RETURN VARCHAR2

IS

BEGIN

  RETURN V1 || v2;

END;

#Python代码:

import cx_Oracle

db_conn = cx_Oracle.connect('scott', 'scott', '127.0.0.1:1521/orcl')

db_cursor=db_conn.cursor()

str=db_cursor.callfunc('f_demo',cx_Oracle.STRING,['abc','ddd'])

print(str)

db_conn.commit()

db_cursor.close()

db_conn.close()

Python3安装cx_Oracle连接oracle数据库实操总结

首先安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本,然后安装配置就容易了!

如果已经安装Python,查看你安装的Python版本是多少位的:

技术图片

当然,你64位的操作系统也是可以安装32位的开发环境。反之则不行!切记!

oracle客户端的版本,cx_Oracle的版本,要与Python版本和位数对应:

比如:

Python版本:Python3.4.3   32位;

cx_Oracle的版本:cx_Oracle-5.2-11g.win32-py3.4

oracle客户端的版本:instantclient-basic-win32-11.2.0.1.0;

这里还有三个注意点:

版本位数对应,都是32位;

cx_Oracle和python版本对应,都是3.4;

cx_Oracle和instantclient版本对应,都是11;   技术图片技术图片

再次说明(别嫌我啰嗦,弄明白很重要):比如,我的系统是win7 64位,python版本却是32位的,所以下载安装的Oracle Client 也是32位 11g的,相应的cx_Oracle 也要是32位11g的,当然也要注意python的版,本python2.X还是python3.X,也要下相应的版本的。

这一点弄明白之后,我们就要准备安装了。

cx_Oracle安装

下载地址:https://pypi.python.org/pypi/cx_Oracle/5.3 下载低版本cx_Oracle版本  我是下载cx_Oracle-5.3-11g.win32-py3.6.exe,下载后直接双击安装,就ok了。

不建议直接使用pip install cx_Oracle命令安装,因为版本问题容易报错。cx_Oracle 报错:cx_Oracle.DatabaseError: DPI-1050: Oracle Client library must be at version 11.2,这就是cx_Oracle版本太高引起的。

oracle 客户端

下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

把下载的文件解压,复制oci,oraocci11,oraociei11的3个DLL粘贴到你的PY目录的Libs/site-packages文件夹下面。

python3.4连接oracle数据库测试代码:

1
2
3
4
5
6
7
8
9
10
import cx_Oracle
 
conn = cx_Oracle.connect(‘用户名/密码@主机ip地址/orcl‘)   #用自己的实际数据库用户名、密码、主机ip地址 替换即可
curs=conn.cursor()
sql=‘SELECT * FROM 。。。‘ #sql语句
rr=curs.execute (sql)
row=curs.fetchone()
print(row[0])
curs.close()
conn.close()

  

配一个ORACLE_HOME的环境变量,指向Instant Client的目录(如果你到这已经可以成功连接orcale数据库了,环境变量这一步不执行也可以,视情况而定):

到自己想要放的路径下,我的是C:\\instantclient-basic-win32-11.2.0.1.0\\instantclient_11_2

然后是配置环境变量:右键计算机——属性——高级系统设置——环境变量——系统变量——新建

  变量:ORACLE_HOME  值:Q:\\OracleClient

  变量:TNS_ADMIN       值:Q:\\OracleClient

  编辑path用‘;‘隔开加一个  Q:\\OracleClient

 

安装结束,整个安装过程非常简单,也是我自己多次失败的总结,希望对你有帮助!

 

补充一点:

oracle数据库服务端版本如果是64位,你的机子上安装的客户端位数是32还是64,都不影响使用。

本机上不需要安装oracle服务端。

以上是关于Python安装cx_oracle操作的主要内容,如果未能解决你的问题,请参考以下文章

Python3安装cx_Oracle连接oracle数据库实操总结

python之Oracle操作(cx_Oracle)

python 安装 cx_Oracle

Python源码安装cx_Oracle

Python安装cx_Oracle模块遇到的问题(32bit)

记:第一次安装python的cx_Oracle遇到的坑,以免忘记