python中连接oracle数据库使用第三方库文件cx_Oracle时遇到了各种问题,网上查找资料调试了几天才弄好,下面是不断调试后总结的一些经验。

1.oracle客户端(Oracle Instant Client)版本需要和操作系统版本位数相同,同时cx_Oracle官方文档(http://cx-oracle.readthedocs.io/en/latest/installation.html)上有这样一段话

Version 12.2 client libraries can connect to Oracle Database 11.2 or greater. Version 12.1 client libraries can connect to Oracle Database 10.2 or greater. Version 11.2 client libraries can connect to Oracle Database 9.2 or greater.

根据安装的Oracle数据库版本选择Oracle客户端(下载地址 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html),我安装的oracle数据库是11g版本,这里的客户端库在下载客户端Oracle Instant Client时就包含在内

下载好oracle客户端后,在客户端目录下新建一/network/admin目录,并在该目录下新建tnsnames.ora文件,增加自己的数据库别名配置。

示例如下:

1 MyDB=

2 (DESCRIPTION =

3 (ADDRESS = (PROTOCOL = TCP)(HOST= IP)(PORT = 1521))4 (CONNECT_DATA =

5 (SERVER =DEDICATED)6 (SERVICE_NAME =)7 )8 )

注意格式要排列好

MyDB为Database名,Host为IP地址, SERVICE_NAME为数据库服务器的实例名。

2.安装的python版本位数也需与操作系统版本位数相同

3.安装的第三方库cx_Oracle需要版本位数和操作系统相同同时,与Oracle数据库对应的版本也应相同,因我安装的数据库是11g,所以下载的是cx_Oracle-5.3-11g.win-amd64-py3.5-2 若安装的数据库是12c则应下载相应版本cx_Oracle(地址 https://pypi.python.org/pypi/cx_Oracle/5.3)

同时可能出现的其他问题在cx_Oracle官方文档中也写出了

1. DPI-1047: Oracle Client library cannot be loaded

Check that Python, cx_Oracle and your Oracle Client libraries are all 64-bit or all 32-bit. The DPI-1047 message will tell you whether the 64-bit or 32-bit Oracle Client is needed for your Python.

检查python,cx_Oracle和Oracle Instant Client版本是否一致,DPI-1047 message会告诉你安装的客户端版本是否正确。

2.On Windows, restart your command prompt and use set PATH to check the environment variable has the correct Oracle Client listed before any other Oracle directories.

记得配置Oracle客户端的环境变量,例如我的配置是 PATH: E:\oracle\instantclient_12_2;

3.On Windows, use the DIR command on the directory set in PATH. Verify that OCI.DLL exists there.

检查oracle客户端(instantclient)目录下存在oci.dll文件

4.On Windows, check that the correct Windows Redistributables have been installed.

oracle客户端libraries需要正确的Visual Studio版本,具体可见(https://oracle.github.io/odpi/doc/installation.html#windows)中windows目录下

On Linux, check the LD_LIBRARY_PATH environment variable contains the Oracle Client library directory.

On macOS, make sure Oracle Instant Client is in ~/lib or /usr/local/lib and that you are not using the bundled Python (use Homebrew or Python.org instead).

最后一切就绪,程序未出错,但并无输出时感觉内心有些崩溃

1 importcx_Oracle2

3 connection = cx_Oracle.Connection("[email protected]:Port/SERVICE_NAME")4 cursor =connection.cursor()5

6 try:7   cursor.execute("select 1 / 0 from dual")8 exceptcx_Oracle.DatabaseError as exc:9   error, =exc.args10 print("Oracle-Error-Code:", error.code)11 print("Oracle-Error-Message:", error.message)

最后查看意识到是执行了sql语句,但并未进行输出

cursor.execute("select 1 / 0 from dual")

下一行增加

print(cursor.description)

便可以看见查找到的数据库中的内容

cx oracle dpi 1002,cx_Oracle连接数据库总结相关推荐

  1. 用什么方式链接oracle数据库,使用cx_Oracle 连接oracle数据库的几种方式

    连接oracle数据库的几种方式: 语法: cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME') import cx_Oracl ...

  2. Python应用实战系列-如何通过Python来操作Oracle数据库:cx_Oracle

    最近需要将一批数据从csv文件中迁移到Oracle数据库中,打算用Python来实现,趁着这个机会,写一篇博客学习总结一些如何使用Python来操作Oracle数据库. 1 安装与导入 Python操 ...

  3. Python操作Oracle数据库:cx_Oracle

    1 安装与导入 Python操作Oracle数据库多用cx_Oracle这个第三方扩展,总体而言,cx_Oracle的使用方式与Python操作MySQL数据库的pymysql库还是很相似的,如果还没 ...

  4. cx oracle 配置,cx_Oracle的配置啊。。终于搞出来了

    参考.. http://www.blogjava.net/jelver/articles/294583.html http://shanchao7932297.blog.163.com/blog/st ...

  5. python连接数据库oracle_python 连接oracle数据库:cx_Oracle

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

  6. cx oracle 连接编码,python用cx_Oracle连接oracle编码问题解决办法

    最近使用python处理文本数据导入oracle数据库.由于数据库是gbk编码的,导致处理文件编码问题困扰我两天的时间. 我用了两个白天加两个晚上研究,程序直接在linux下用python运行程序成功 ...

  7. cx oracle 返回码,oracle错误代码处理cx_oracle

    我正在尝试使用cx_oracle从Python访问Oracle. 我有一个select语句,返回没有行即; NO_DATA_FOUND ..这就是我如何处理错误条件. 当我执行这段代码时,错误NO_D ...

  8. 下载cx oracle 6,在Centos 6上安装cx_Oracle

    我花了很多时间试图安装cx_Oracle. 我试过各种版本的Oracle库.最接近32位11.1库的oracle-instantclient11.1-basic-11.1.0.7.0-1.i386.r ...

  9. python cx oracle 11g,怎么在python中使用cx_Oracle模块连接Oracle数据库

    怎么在python中使用cx_Oracle模块连接Oracle数据库 发布时间:2021-03-29 18:08:05 来源:亿速云 阅读:65 作者:Leah 怎么在python中使用cx_Orac ...

最新文章

  1. 在Win7中怎样打开摄像头?
  2. 打不死我的,终将使我强大!DevOps黑客马拉松参赛心得
  3. 背包问题(动态规划)
  4. 在计算机软件中 CUI的中文意思是,长江大学 计算机基础11-12上A卷cui
  5. python commands_python之commands模块
  6. 【UVa11178】Morley's Theorem(向量旋转+直线交点)
  7. Java并发编程实战_盖兹
  8. Python合并两个有序链表
  9. 从零搭建个人深度学习服务器|SSH远程登录|外网访问|手动指定ip|端口转发
  10. linux找回cp之前的文件,Linux中找回误删除的文件
  11. 手机wife修改dns服务器,简单几步DNS设置,让你手机的WiFi速度提升几倍
  12. Java从遗忘到入门——Day06
  13. java xml 大文件怎么打开_JAVA xml 流方式读取。数据挖掘大文件预处理。
  14. 【单片机仿真项目】数码管(proteus原理图+keil代码)
  15. java将图片url转换成数据流输出到前端
  16. 速卖通如何避免差评?
  17. [附源码]java毕业设计小说网站的设计与实现1
  18. Springcloug入门
  19. 如何让网站HTTPS评级为A或者A+
  20. 软件工程专业的论文答辩_软件工程专业论文答辩一般都会问些什么问题啊?(我们老师没联系过我们,什么都不知道)?...

热门文章

  1. “编程能力差,90%输在了数学上!”CTO:其实你们都是瞎努力!
  2. 阿里云开放国内首个云端数据库测试平台,云已成为数据库新标准;华为5G随行WiFi发布;科大讯飞推出 AI 专用语音芯片系列……...
  3. 云数据库精华问答 | 云数据库与其他数据库的关系
  4. 容器:开启应用微观时代
  5. php开发api数据加密,php-app开发接口加密
  6. 表格长度_知道你的成绩单是怎么打印的吗?超长Excel表格1页打印,拯救A4纸
  7. javacurrentmap_Java ConcurrentHashMap.forEach方法代码示例
  8. php中source,PHP中source #N问题的解决方法
  9. oracle中如何创建表的自增ID(通过序列)
  10. STS安装 activiti-designer-5.18.0插件