python连接oracle报错dpi 1047_python连接Oracle的方式以及过程中遇到的问题
一、库连接步骤
1、下载cx_Oracle模块
下载步骤
工具 pycharm :File--->右键setting--->找到Project Interpreter ----->在此位置搜索下载相应的模块进行下载即可
搜索想要安装的模块,选中之后Install package即可
2、python连接代码编写
前提:虚拟机上的window7上32位的Oralce11.2.0版本的数据库、表Python_Oracle ,以及表中有一些测试数据
"""---------------------------------------Author:Zjh
Date:2019-09-23 15:51
---------------------------------------
"""import cx_Oracle
#连接Oracle数据库classConnection():
def OracleConn(self):
# xnj= """ # (DESCRIPTION =# (ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.27.4)(PORT = 1521))
# (CONNECT_DATA=# (SERVER=DEDICATED)
# (SERVICE_NAME=orcl) )
# )
#"""#建立Oracle远程连接
# highway=cx_Oracle.connect('api_work','apiwork@1234',xnj)
highway=cx_Oracle.connect('*****','**apiwork@1234**','192.168.27.4:1521/orcl')
#获取cursor光标
cursor=highway.cursor()
#数据库操作
#1.查询
sql='select * from Python_Oracle'result=cursor.execute(sql)
print('type of result',type(result)) #为了观察数据库查询语句执行的结果是什么类型的
print("Number of rows returned: %d" %cursor.rowcount)for i inresult: #循环遍历,查询得到的结果集
print(i)
#1.插入操作
cursor.close()
highway.close()
pass
passif __name__=='__main__':
connection=Connection()
connection.OracleConn()
查询结果:
二、遇到的问题以及解答
问题1、刚刚在进行完上面的安装cx_Oracle模块的时候遇到的问题:自己按照上面的步骤进行了Install package,之后引入的时候却有错误提示,说是还没有相应的模块,
原因:引入方式正确,但是需要稍微的等待一段时间,等待pycharm真正的完全的安装完成,pycharm 的下方有相应的正在加载的提示。。。。modules loading
等待加载或者下载完毕即可消除错误提示
问题2、编写完上述的python代码之后,尝试运行,结果报错
python连接oracle数据库报错
"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded:"
解决方案:
1)
根据错误提示:得知是64位的Oracle Client无法被加载,这里的原因是没有安装64位版的Oracle客户端
下载安装64位版的Oracle Client 地址连接:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
我下载的版本是:
下载完毕之后,将zip包解压到D:/下面,形成一个D:\instantclient_11_2 的文件夹,下面是zip包中的内容
2)配置系统环境变量
a:NLS_LANG 值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 为了防止中文乱码
b: ORACLE_HOME 值:D:\instantclient_11_2 ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东,其实配置这个 变量是为了在path中去%ORACLE_HOME%使用,如果没有这个变量也可以,
c: TNS_ADMIN 值:D:\instantclient_11_2
d: path 值:D:\instantclient_11_2 为了在哪里都能找到可执行的Oracle客户端下面的可执行程序
path 图示
最后重启pycharm,运行代码即可查询成功
问题解决
问题三、可能大家理解也有这样的误区:为什么解压了客户端形成了一个目录D:\instantclient_11_2 就可以成功访问连接数据库
原因,python会从环境变量path中去找客户端中的一些.dll包,所以需要配置环境变量 path =.......D:\instantclient_11_2
因为
b: ORACLE_HOME 值:D:\instantclient_11_2 ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东,其实配置这个
变量是为了在path中去%ORACLE_HOME%使用,如果没有这个变量也可以,只要在path中配置了安装的instantclient_11_2的根路径即可
第一个环境变量是为了python找到为了连接Oracle所下载的客户端,
为了python找到为了连接Oracle所下载的客户端目录
并没有tnsnames.ora
listener.ora等文件
第二个是为了使得在cmd下的任何位置都可以执行Oracle客户端下的可执行命令如sqlplus等
有tnsnames.ora
listener.ora等文件
具体的都叫oracle客户端,但是他们的区别是???????
还有一点需要注意的,当我们第一次安装了Oracle的客户端也就是图二的那种,在plsql dev中的首选项中会选择一个客户端的安装根目录和其下的一个oci.dll文件,这个和客户端的环境变量是没有关系的,
因为这里已经指定了路径了,也就是
中的第一项可以不配置,配置仅仅是为了能在dos的任何目录下去执行那些Oracle10g下的可执行命令
python连接oracle报错dpi 1047_python连接Oracle的方式以及过程中遇到的问题相关推荐
- 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。
解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException.如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错. 参考文章 ...
- win7查看网络连接属性报错:网络连接出现意外错误
今天早上在吃早餐的时候,别的办公司的妹子给我发消息说:云通信(公司使用的内部通信软件,类似于qq)可以正常发消息,但是就是网页上不了. 这不是很明显的DNS问题吗?网卡禁用重启就好了啊 但是实际情况确 ...
- 还是firefox 连接https 报错:(连接被重置)(已解决)
今天用firefox 连接小鸡上的hmc 报错: 连接被重置 载入页面时到服务器的连接被重置. * 此站点暂时不可用或者太忙.请稍后重试. * 如果您无法载入任何页面,请检查您计算机的网络连接 ...
- oracle报错查询动态视图,oracle基表和动态性能视图
1. 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息.它是只读表和视图的集合,所有者为sys用户.用户自能在数据字典上执行查询操作,而维护和修改是由系统自动完成的. 数据 ...
- jforum oracle报错,JForum安装在Oracle数据库上
参考资料:http://jforum.net/install_no_wizard.jsp 1. 数据库配置 首先,你的安装数据库,这里安装的是Oracle,不解释. 打开 WEB-INF/config ...
- oracle报错数据复数,在ORACLE数据库间移动或复制表空间测试
做了个移动表空间的测试 我想把数据库orcl里面的某个表空间,移到另一个数据库epma 先建一些表空间,以及用户 create tablespace tts1 datafile 'D:\ORADATA ...
- oracle报错分类,localdateTime与oracle映射报错无效列类型
当前使用版本(必须填写清楚,否则不予处理) com.baomidou mybatis-plus-boot-starter 3.1.2版本 但是1.0.5版本没有问题,可以正常映射使用 该问题是怎么引起 ...
- java连接oracle报错ora-12505,JDBC连接ORACLE中的ORA-12505错误以及相关问题和解决方式...
问题描述:重装系统和oracle 11g,实例名orcl,输入以下代码 import java.sql.*; public class TestJDBC { public static void ma ...
- java连接oracle报错_java 项目连接oracle 报错如下
org.apache.catalina.core.StandardContextlistenerStart严重:Exceptionsendingcontextinitializedeventtolis ...
最新文章
- LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
- 几乎死循环的存储过程
- Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
- memcache调整value大小限制
- 【6】nagios从零学习使用 - centreon发送邮件报警
- 请珍爱自己的身体搞开发的兄弟们
- SC2012 Orchestrator - 文档及资源链接
- UIApplication Delegate和UIApplicationMain(程序完整启动过程)
- Java 是如何优雅地实现接口数据校验的?
- mysql之 xtrabackup原理、备份日志分析、备份信息获取
- ADS软件的使用教程
- 熟悉matlab工作环境实验报告,MATLAB上机实验实验报告
- 阅读---读吴军博士《态度》有感
- 【Reinforcement Learning】蒙特卡洛算法
- js遍历对象(js遍历对象的所有属性)
- div和span的标签属性及说明
- A comprehensive overview of knowledge graph completion
- 临摹 x 科幻 x AI | MixTalk S01-09
- 关于《Foxit Phantom的完美破解》的一点补充——打印驱动破解
- Ackerman函数 非递归 java_Ackerman函数的非递归实现.