Python访问Oracle, 首选cx_Oracle模块, 功能十分强劲!
#==========================
# 下载cx_Oracle源码
#==========================
cx-oracle官网
http://cx-oracle.sourceforge.net/
如果选择用源码安装, 下载最新版的Source Code only 包即可. 如果oracle 客户端是Oracle instant client, 除了安装basic package外, 还需要安装sdk包, 否则cx_oracle无法编译.
#==========================
# 下载cx_Oracle 编译包
#==========================
如果要使用编译好的包, 选择什么版本就能讲究了. 如果你的机器已经安装好Oracle客户端了, 先要看一下看操作系统的是x64还是i386架构, 再看机器上安装的Oracle客户端的版本(10g还是11g, 64bit还是32bit), 最后再看你的python版本(2.7还是2.6, 64bit还是32bit). cx_Oracle版本一定要选对. 否则即使安装完也无法使用.
python --version
如何确定python是32bit还是64bit, 在windows下很容易, 进入python shell后, 从提示信息就能看出. 在linux下, 需要使用file 命令, 比如 file usr/bin/python2.5
#==========================
# 在Windows上安装 Oracle Instant Client
#==========================
摸索出 Windows上cx-Oracle安装过程确实不易, 看来很少有人在windows 上玩 cx_Oracle.
参考文章:
http://gypsyer.blog.51cto.com/734537/163344
http://blog.csdn.net/huzhenwei/article/details/3946308
http://mostperfect.net/blog/2010/07/28/installing-cx_oracle-on-windows/
http://blog.csdn.net/axzywan/article/details/5316028 ,安装Oracle Instant Client.
1. 下载并安装 Oracle Instant Client 的 Basic package, 其它包可选,sdk包推荐安装, 比如安装目录为 C:\Oracle\instantclient, (官网地址:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
镜像地址: http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/ )
2. 为 instantclient 增加 tns 文件. Oracle Instant Client 安装后并没有tns文件, 需要自己创建配置tns文件, 按照oracle的命名惯例, 在 C:\Oracle\instantclient 下创建 network\admin 目录, 然后放置一个 tnsnames.ora 文件.
3. 增加环境变量 Path, 将 C:\Oracle\instantclient 增加进去.
4. 增加环境变量 TNS_ADMIN , 指向 上面的 TNS 文件夹. 如果 tnsnames.ora 文件没有放在C:\Oracle\instantclient\network\admin, 这步是必需的.
5. 修改注册表 NLS_LANG 值, \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 查找键 NLS_LANG, 这个键由Oracle标准客户端安装创建, 值是 NA 。这个导致了 ORA-12705错误。解决方法就是修改NA为 SIMPLIFIED CHINESE_CHINA.ZHS16GBK 。
#==========================
# 在Windows上配置 cx_oracle
#==========================
6. 将C:\Oracle\instantclient的所有dll 文件, 复制到 {pythonInstall}\Lib\site-packages目录下
7. 根据 python 的版本和 Oracle 客户端的版本, 下载合适的 cx_Oracle 编译包. (http://cx-oracle.sourceforge.net/). 安装之.
8. 测试 cx_Oracle
import cx_Oracle
db_conn = cx_Oracle.connect(“user/pass@tnsname.world”)
如果 import cx_Oracle 报错ImportError: DLL load failed: 找不到指定的程序。 可以使用Dependency Walker这个工具打开 cx_Oracle.pyd, 看看到底还缺哪些dll
Dependency Walker下载地址: http://www.dependencywalker.com/
如果实在安装不上编译版, 试试源码编译安装吧, 过程也很痛苦, 参考: How to compile cx_Oracle (python 3.2 for Windows x64)
http://www.dbaportal.eu/?q=node/194
#==========================
# 在Linux安装前的配置,
#==========================
参考文章:
http://blog.csdn.net/huzhenwei/article/details/3946308
http://cx-oracle.sourceforge.net/BUILD.txt
在.bash_profile中,
export ORACLE_HOME=[your installation path]/instantclient_11_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME
export NLS_LANG=.UTF8 # 否则会报 ORA-xxx错误
另外, 建立libclntsh.so symlink
cd $ORACLE_HOME
find .|grep libclntsh, 找到libclntsh.so.x.x,
ln -s libclntsh.so.x.x libclntsh.so
#==========================
# 在Linux上源码安装,
#==========================
在Linux上, 推荐使用源码安装.
python setup.py build
python setup.py install --prefix=/usr/local
#==========================
# 在Linux上RPM安装,
#==========================
如果有root账号, 可以直接安装cx_Oracle的rpm包. 我的linux上已经安装了多个python版本, 用这种方法安装, cx_Oracle始终不能被import. 可能的解决方法是: 在运行rpm时候, 通过--prefix选项来指定软件包安装的路径
rpm -ivh cx_Oracle-5.1-10g-py27-1.x86_64.rpm
或rpm -ivh --nodeps cx_Oracle-5.1-10g-py27-1.x86_64.rpm
#==========================
# cx-oracle的教程 ,
#==========================
[简单] http://www.orafaq.com/wiki/Python
[简单] http://codingtutorials.co.uk/blog/?p=31
[全面]Sidekick - cx_Oracle (code paterns)系列 http://www.dbaportal.eu/?q=node/125
[全面] http://www.oracle.com/technetwork/articles/dsl/python-091105.html
[示例] http://code.google.com/p/cx-oracle-demos
[介绍]Python cx_Oracle 5.0新特性 http://www.oszx.net/archives/718
[注意]如果是sqlalchemy+cx_oracle的话, 需要禁掉 connection pool, 否则会有异常. 方法是设置sqlalchemy.poolclass为sqlalchemy.pool.NullPool
如何执行Oracle的存储过程, 并取到存储过程的out游标
http://stackoverflow.com/questions/6821372/python-oracle-passing-in-a-cursor-out-parameter
--PL SQL
create or replace procedure sp_procedure(
cid int,
rep_date date,
ret out sys_refcursor
) is
begin
open ret for
select
...
end;
#python
import cx_Oracle
from datetime import date
connstr='user/pass@127.0.0.1:2521/XE'
connstr='user/pwd@tns'
conn = cx_Oracle.connect(connstr)
cursor = conn.cursor()
cid = 1
rep_date = date(2011,06,30)
l_cur = cursor.var(cx_Oracle.CURSOR)
l_query = cursor.callproc('sp_procedure', (cid,rep_date,l_cur))
l_results = l_query[2]
for row in l_results:
print row
# Column Specs
for row in l_results.description:
print row
相关推荐
cx_Oracle模块通过使用Oracle客户端库来实现与Oracle数据库的交互。它被分发在一个开源许可证,即Python软件基金会许可证(PSF license)之下。 cx_Oracle模块提供了一系列数据库操作功能,例如执行SQL查询、存储...
1. **cx_Oracle 模块介绍**: - `cx_Oracle` 是 Python 开发者用来访问 Oracle 数据库的接口,它允许 Python 程序直接与 Oracle 数据库进行通信,执行 SQL 查询,处理事务等。 - 这个模块支持 Python 2.x 和 3.x ...
1. `cx_Oracle`源代码文件:这是cx_oracle模块的源代码,需要被编译并安装到Python的site-packages目录下。 2. Oracle Instant Client:Oracle数据库的轻量级客户端,包含连接Oracle数据库所需的库文件。离线包可能...
cx_Oracle是Python数据库API规范的实现,用于访问Oracle数据库。目前,该模块经过对Oracle客户端版本11.2、12.1和12.2...通过阅读文档,开发者可以有效地利用cx_Oracle模块来构建稳定、高效的Oracle数据库应用程序。
Python中的cx_Oracle模块是用于连接和操作Oracle数据库的一个强大工具。它允许Python开发者通过标准的DB-API 2.0接口来与Oracle数据库进行交互,实现了包括查询、插入、更新和删除在内的各种数据库操作。 首先,要...
至此,cx_Oracle模块已经准备就绪,你可以使用Python进行Oracle数据库的连接和操作了。 总结一下,cx_Oracle离线安装在Linux环境下,需要安装cx_Oracle的RPM包,并配置Oracle Instant Client,包括基本连接库和SDK...
cx_Oracle-5.1.2-11g.win-amd64-py2.7.msi 和 cx_Oracle-5.1.2-11g.win32-py2.7.msi 是cx_Oracle模块的安装文件,分别对应于64位和32位的Windows操作系统,并且都是针对Python 2.7版本的。这两个msi文件的含义如下:...
本文将详细介绍cx_Oracle模块的使用及其在Django框架下的应用。 cx_Oracle是Python的一个第三方库,它提供了Python访问Oracle数据库的接口。"cx_Oracle-6.0b2-py3.6-win32.rar"是一个针对Python 3.6和Windows 32位...
当你尝试使用cx_Oracle时,如果系统找不到oci.dll,Python解释器就无法正确加载cx_Oracle模块,进而导致运行时错误。描述中提到的问题正是这种情况,开发者在使用web.py框架连接Oracle时遇到了oci.dll缺失的问题。 ...
在安装cx_Oracle之前,确保你的Python环境已经准备好,并且了解了Python的安装和模块管理机制,例如使用pip进行安装。在没有pip的情况下,可以手动解压tar.gz文件,然后使用Python的setup.py脚本进行安装。 其次,...
本文将详细介绍cx_Oracle模块的使用方法以及如何安装"cx_Oracle-5.1.2-11g.win32-py2.7.msi"这个特定版本。 首先,让我们理解cx_Oracle的基本概念。cx_Oracle是Python的一个接口,它允许Python代码直接调用Oracle...
Python 是一种高度面向对象的语言,它易于学习并遵循良好的编程风格,即使那些没有经过正式软件工程培训的用户也可以使用它。由于易于学习,因此它无论是对于新手还是对于专家都具有很大的吸引力。
python 连接oracle用的 cx_oracle 模块,使用条件: 1. 首先安装python; 2. 安装oracle 客户端; 3. 安装 cx_oracle; 使用方法: #!/usr/bin/python import cx_Oracle 如果import没有问题,则说明安装成功。
这个安装程序会将 cx_Oracle 库添加到你的 Python 安装中,使其可以识别并使用 cx_Oracle 模块。 4. 安装完成后,你可以通过 Python 提示符验证 cx_Oracle 是否正确安装。打开命令行,输入 `python` 进入 Python ...
在Python项目中使用cx_Oracle时,你需要导入cx_Oracle模块,然后创建连接对象,指定数据库连接的参数,如主机名、端口号、服务名、用户名和密码。之后,你可以通过这个连接对象执行SQL语句,获取游标,处理结果集,...
通过捕获cx_Oracle模块的异常,可以更好地处理这些问题: ```python try: # Database operation except cx_Oracle.Error as error: print(f'Oracle error occurred: {error}') ``` 总之,cx_Oracle库是Python与...
2. 导入cx_Oracle模块:在Python脚本中,使用`import cx_Oracle`引入库。 3. 创建连接:使用`cx_Oracle.connect()`建立数据库连接。 4. 创建游标:使用`connection.cursor()`创建游标对象。 5. 执行SQL:在游标对象...
cx_Oracle模块引入了一些特定的异常类,如`cx_Oracle.DatabaseError`、`cx_Oracle.IntegrityError`等,这些异常可以帮助我们定位和解决在数据库操作过程中遇到的问题。 总的来说,cx_Oracle是Python开发人员连接和...
在Python中,`cx_Oracle` 模块提供了以下关键功能: 1. **连接管理**:通过 `cx_Oracle.connect()` 函数,你可以建立与Oracle数据库的连接。需要提供数据库的连接字符串,通常包括用户名、密码和数据库服务名。 `...
7. **异常处理**:cx_Oracle模块提供了一套完整的异常处理机制,如`cx_Oracle.DatabaseError`,`cx_Oracle.IntegrityError`等,可以帮助开发者更好地处理可能出现的问题。 8. **安全考虑**:在使用cx_Oracle时,应...