cx oracle dpi 1002,cx_Oracle连接数据库总结

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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528898.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机python建站_搭建本地虚拟服务器linux(CentOS 7)的python虚拟环境(Hyper-V演示)...

新建虚拟机->安装CentOS7->新建虚拟交换机:内部网络->CentOS7设置->网络适配器:虚拟交换机:新建虚拟交换机->进入CentOS#cd /etc/sysconfig/network-scripts/#ls -a#vi ifcfg-eth0 #(有些系统不是eth0,前面ifcfg-的…

matlab 输入日期,matlab输入年月日算一年中的第几天.doc

matlab输入年月日算一年中的第几天clc,clear all,close alldisp This program calculates the day of year given the ;disp current date. ;month input Enter current month 1-12 : ;day input Enter current day 1-31 : ;year input Enter current year yyyy : ;%Check for …

深拷贝的缺点_拷贝?还傻傻分不清深浅?

「引言」❝臣闻求木之长者,必固其根本;欲流之远者,必浚其泉源。---- 魏征 《谏太宗十思疏》❞或许你会问到,网上已经把深浅拷贝(算一个面试的高频考点了吧)的文章都快写烂了,为什么自己还要重新操刀写一遍呢&#xff0…

php 失去 焦点 另一个表单猎取值,同一表单如何根据某一个文本框的值 改变另一个文本框的值...

我用的是失去焦点,然后后台查询到了数据,返回回来显示不了!!$(document).ready(function(){$("#card").blur(function(){var card$("#card").val();if(card!""){$.get("{:U(guoye/yanzheng)}&…

实现文件中名词的统计计数_通过勤哲EXCEL和Excel中的rank函数实现排名统计

如今,信息化已成为各行业企业转型和发展的关键所在,信息化技术最明显的特点是企业不同部门的人在信息技术的支撑下,可以利用丰富的资源与工具展开协作学习,在相对自由的模式和环境下,改变传统设计相对局限、固定思维的…

php 选择 出现列表,php – 如何从加权列表中选择4个唯一项?

所以我有一个加权项目列表,我想从这个列表中选择4个非重复项目.Item WeightApple 5Banana 7Cherry 12...Orange 8Pineapple 50最有效的方法是什么?我最初的尝试是,如果一个已经被选中的项目出现的话,只需重新选择随后的选秀权……但是对于一个小名单,这可能会导致大…

安徽关节式焊接机器人_上下料机器人的重要性体现在哪里?它有哪些优势?

上下料机器人是工业机器人家族中从事加工应用的重要成员之一,能满足“快速、大批量加工节拍”、“节省人力成本”、“提高生产效率”等要求,成为越来越多中心企业的理想选择。那么,上下料机器人有哪些特征和优势?企业主应该如何选…

oracle查询ora03114,求教:ora-03114错误从哪里排查?

ERP软件偶尔会报 ora-03114错误 未连接到oracle我检查数据库的根超时有关的设置dba_profiles中的如下两个参数,都是不限制connect_timeunlimitedidle_timeunlimitedsqlnet.net中,只设置了如下参数SQLNET.EXPIRE_TIME5 --这个用来清除僵死连接的监听日志文…

python大学什么专业学校_好学校的差专业和一般大学的好专业,该怎么选?我来说真话……...

假如是985,那么只能调剂专业,那么好点211能选到不错的专业。那该怎么选择?其实不单单是985/211的问题,是所有考生的任何一个分数都面临这个问题。比如清华北大被调剂,是去复交金融,还是去清华北大调剂去学环…

oracle查询表nextval,Oracle Database 建立与查询 Sequence

相关的 Oracle Database Sequence 资讯如下:建立 Sequence 语法create sequence ._sincrement by 1start with 1maxvalue 99999999999999999999minvalue 1nocycle;其中 :incerment: 每次增加的数值start : Sequence 开始数值maxvalue : Sequence 最大值nocycle …

vision软件_Roboguide软件:高速拾取仿真工作站相机与工具添加与配置

上一期为大家介绍了机器人高速拾取仿真工作站中工件、视觉校准板、输送带等外围设备的添加与配置,本期再来为大家介绍一下相机、机器人工具的添加与配置。一、相机添加与配置1.左侧浏览树中右击“Sensor Units”,在弹出的快捷菜单中依次点击“Add Sensor…

oracle00333,Oracle数据库REDO损坏ora-00333修复手札

1.事情起因接到电话,周日意外断电,数据库起不了,报REDO CRASH,ora-00333错误。相关环境如下:RAC oracle_11.2.0.3,无备份,开归档。2 处理一到现场,既然对方没有备份,那就做一个冷备份…

oracle cannot allocate new log,Thread 1 cannot allocate new log

今天发现alter.log有以下信息:Thread 1 cannot allocate new log, sequence 6166Private strand flush not complete对于这个错误信息得解释如下:当系统要重新利用某个日志文件的时候,系统需要将该日志文件所包括的buffer cache 中的dirty bl…

arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程

微信关注 “DLGG创客DIY”设为“星标”,重磅干货,第一时间送达。❝转载自慕容流年 https://me.csdn.net/qq_41868901❞1. LVGL简介LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的…

linux内核开文件系统,内核必须懂(二): Linux文件系统初探

目录前言文件系统结构新建文件和inode文件创建过程inode解析打开文件参考最后前言这次来说文件系统. 文件系统是非常重要的, 提高磁盘使用率, 减小磁盘磨损等等都是文件系统要解决的问题. 市面上的文件系统也是数不胜数, 比较常用的像ext4, xfs以及ntfs等等, 国内的像鹅厂的tfs…

gps卫星位置计算程序matlab_科研项目 | BD/ GPS卫星导航仿真测试系统研究

一、项目背景在移动互联和互联网的时代,卫星导航定位已经成为生活中不可或缺的部分。目前,我国的交通、银行、电力、采矿、测绘等部门以及大众化市场都需要大量的定位、授时服务。许多企业也形成了覆盖卫星导航相关材料及元器件、卫星导航芯片、卫星导航…

linux docker权限,linux - 如何解决ubuntu中的docker权限问题? - Ubuntu问答

问题描述我已经按照here的说明安装了docker。我使用Ubuntu Trusty 14.04 (LTS) (64-bit)。安装过程中的一切都很好。另外,命令$ sudo docker run -i -t ubuntu /bin/bash可以很好地完成(在打开的控制台中键入”exit”之后。但是当我尝试执行其他操作时,我…

python虚拟人脸生成_GitHub - 597111463/seeprettyface-generator-yellow: 这是一个用StyleGAN训练出的黄种人人脸生成器...

黄种人人脸生成器注明:之前做的一些有意思的人脸生成器,现在全部开源分享出来。它的主要作用是可生成制作各类型的人脸素材,供我们任意使用且无须担心人脸版权的问题。在定制人脸上,开源的全系列生成器包括:黄种人脸生…

Linux输入密码接口,Linux下搭建接口自动化测试平台

前言我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧!需要在Linux上提前准备的环境(下面是本人搭建时的环境):1,Python 3.6.8 (可参考随笔:Linux学习6-安装Python3.6)2,MySQL 5.7(可参考…

python构建字典实现英文大写字母与ascii编码的转换_Python:将复杂的字符串字典从Unicode转换为ASCII...

作为从JSON API调用解析的多级字典,我有很多输入.字符串都是unicode,这意味着有很多ustuff like this.我正在使用jq来处理结果,需要将这些结果转换为ASCII.我知道我可以编写一个函数来像这样转换它:def convert(input):if isinstance(input, dict):ret {}for stuff in input:r…