Python3.6连接Oracle 10G图解指南

专栏 / Python3.6连接Oracle 10G图解指南

Python3.6连接Oracle 10G图解指南

2021-09-08 13:42 --阅读 · --喜欢 · 正厚软件
粉丝: 195 文章: 296


Python3.6连接Oracle 10G图解指南

Python连接Oracle相对mysql等其它数据库会麻烦一些,需要增加Oracle_client libraries这层连接。

如下图:


其中最容易出现问题是Python解析器、cx_oracle扩展模块、Oracle client三者使用的版本一致性。比如:都是win64位程序,这点很重要。

官网图解


1、Python解析器版本:

dos命令行执行Python,得知3.6 win AMD64位版本



2、Cx_oracle

Cx_oracle是Python访问Oracle的扩展模块module,在程序中需要import的模块。安装方法:

1、自动安装:

pip install cx-oracle


cx_Oracle 8.2最新版,支持Python3.6到3.9版本。

2、手工安装:

(1)从pypi下载包:

https://pypi.org/project/cx-Oracle/#files


(2)Dos下执行:

pip install cx_Oracle-8.2.1-cp36-cp36m-win_amd64.whl


具体使用参考文档

https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html#overview

数据库连接、增删改查等。


3、Oracle Client

Oracle Client Libraries是Oracle client的精简版,如果本机安装了和cx_oracle版本匹配的Oracle客户端,可以直接使用。

有关认证配置,请参阅Oracle Support的Doc ID 207303.1。

总之,Oracle Client Libraries:

21可以连接到Oracle Database 12.1或更高版本。

19、18和12.2可以连接到Oracle Database 11.2或更高版本。

12.1可以连接到Oracle Database 10.2或更高版本。

11.2可以连接到Oracle Database 9.2或更高版本。


client中最重要3个文件:

oci.dll(最重要文件)

oraocci12.dll(不同版本12数字会不同)

oraociei12.dll(不同版本12数字会不同)。

client libraries也称之为instant client

详情见:

https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html

下载地址:

https://www.oracle.com/database/technologies/instant-client/downloads.html


注意,如果使用12.1,需要vc++ 2010,其它版本也有对应的vc要求。


下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=26999


使用 Oracle 客户端库

详细参考文档:https://cx-oracle.readthedocs.io/en/latest/user_guide/initialization.html#using-cx-oracle-init-oracle-client-to-set-the-oracle-client-directory

方式1:在程序中指定client目录

程序中指定解压后client libraries的位置和tnsnames.ora文件目录

#################  连接方法1:直接指定tnsnames位置 #######################
cx_Oracle.init_oracle_client(lib_dir=r"D:\dev\tools\oracle\instantclient_12_1")
## client 12.1 使用tnsnames文件别名链接
db = cx_Oracle.connect('scott/scott@orcl')

config_dir 可以不指定,默认查找  lib_dir下面的 \network\admin\tnsnames.ora

方式2: 使用win环境变量

配置Oracle client目录到path环境变量

经过上述步骤,Python连接Oracle环境配置就OK了,最后需要注意工程的Python解析器必须和上述配置的解析器是同一个,PyCharm Community2020版本会在当前工程自动创建Python环境。


4、Oracle Database

验证版本信息:select * from v$version



常见错误

DPI-1047版本不一致

错误cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library

原因:python,cx_oracle和oracle客户端的位数不一致。

解决方案:使用1中提到的一致版本。

ORA-12154: TNS

cx_Oracle.DatabaseError: ORA-12154: TNS: 无法解析指定的连接标识符


原因1:

连接串参数错误

解决方案:

cx_oracle7和8下使用连接有差异:


## cx_oracle8.2 使用tnsnames文件别名链接(对应 instant client 12.1 )
db = cx_Oracle.connect('scott/scott@orcl')

# cx_oracle7 使用下面的连接写法 (对应 instant client 11.2)
# db = cx_Oracle.connect('scott/scott@192.168.159.100:1521/orcl')
print("oracle版本:", db.version)


原因2:目录无读写权限,

如程序中指定的lib_dir无权限

cx_Oracle.init_oracle_client(lib_dir=r"D:\dev\tools\oracle\instantclient_12_1")

解决方案:修改权限,文件夹-属性-安全,修改权限


投诉或建议
三上悠亚|AV 是我的强项,我想向观看它的人传达我的勇气
fempass第七位嘉宾是三上悠亚,从偶像变成性感女演员,现在是服装制作人。 今年迎来AV出道6周年的她,询问了心情的变化和今后的目标。 三上悠亚 简介 1993 年 8 月 16 日出生。2015 年 6 月 1 日 MUTEKI 的 AV 首次亮相。目前,她作为S1专属女演员出演了80部作品(截至2021年6月)。 2016年5月4日,获得DMM.R18成人大奖2016最佳新人女演员奖、最佳影片奖等四项桂冠。次年,她获得了 2017 年 DMM.R18 成人奖的最佳女演员奖。活跃于 Ebisu Mus
从“体力活”到“智力活”,现代农业发生了什么变化【附增:智慧农业PPT】
招兼职编辑啦~ 不管是在职教师,还是大学生,如果您拥有扎实的地理素养和良好的文字功底、责任心强,欢迎成为我们的签约作者哟~羊羊地理期待您的加入!请将简历及相关作品发送至邮箱: yangyangdili@126.com作者 不是山风 | 排版 杳杳最近的试题中我们会遇到不少人工智能与农业生产相结合的内容,如“无人农场”、“智慧农业”、“互联网+农业”、“农业4.0”等。今天我们就来说说智能化技术在农业中的应用、意义和发展方式。Ps. 我们会送出PPT版的"智慧农业"试题集,领取方式见文末哦~ 01 智慧农业