一、库连接步骤

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的方式以及过程中遇到的问题相关推荐

  1. 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。

    解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException.如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错. 参考文章 ...

  2. win7查看网络连接属性报错:网络连接出现意外错误

    今天早上在吃早餐的时候,别的办公司的妹子给我发消息说:云通信(公司使用的内部通信软件,类似于qq)可以正常发消息,但是就是网页上不了. 这不是很明显的DNS问题吗?网卡禁用重启就好了啊 但是实际情况确 ...

  3. 还是firefox 连接https 报错:(连接被重置)(已解决)

    今天用firefox 连接小鸡上的hmc 报错: 连接被重置 载入页面时到服务器的连接被重置. *   此站点暂时不可用或者太忙.请稍后重试. *   如果您无法载入任何页面,请检查您计算机的网络连接 ...

  4. oracle报错查询动态视图,oracle基表和动态性能视图

    1. 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息.它是只读表和视图的集合,所有者为sys用户.用户自能在数据字典上执行查询操作,而维护和修改是由系统自动完成的. 数据 ...

  5. jforum oracle报错,JForum安装在Oracle数据库上

    参考资料:http://jforum.net/install_no_wizard.jsp 1. 数据库配置 首先,你的安装数据库,这里安装的是Oracle,不解释. 打开 WEB-INF/config ...

  6. oracle报错数据复数,在ORACLE数据库间移动或复制表空间测试

    做了个移动表空间的测试 我想把数据库orcl里面的某个表空间,移到另一个数据库epma 先建一些表空间,以及用户 create tablespace tts1 datafile 'D:\ORADATA ...

  7. oracle报错分类,localdateTime与oracle映射报错无效列类型

    当前使用版本(必须填写清楚,否则不予处理) com.baomidou mybatis-plus-boot-starter 3.1.2版本 但是1.0.5版本没有问题,可以正常映射使用 该问题是怎么引起 ...

  8. java连接oracle报错ora-12505,JDBC连接ORACLE中的ORA-12505错误以及相关问题和解决方式...

    问题描述:重装系统和oracle 11g,实例名orcl,输入以下代码 import java.sql.*; public class TestJDBC { public static void ma ...

  9. java连接oracle报错_java 项目连接oracle 报错如下

    org.apache.catalina.core.StandardContextlistenerStart严重:Exceptionsendingcontextinitializedeventtolis ...

最新文章

  1. LOJ 2721 「NOI2018」屠龙勇士——扩展中国剩余定理
  2. 几乎死循环的存储过程
  3. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能
  4. memcache调整value大小限制
  5. 【6】nagios从零学习使用 - centreon发送邮件报警
  6. 请珍爱自己的身体搞开发的兄弟们
  7. SC2012 Orchestrator - 文档及资源链接
  8. UIApplication Delegate和UIApplicationMain(程序完整启动过程)
  9. Java 是如何优雅地实现接口数据校验的?
  10. mysql之 xtrabackup原理、备份日志分析、备份信息获取
  11. ADS软件的使用教程
  12. 熟悉matlab工作环境实验报告,MATLAB上机实验实验报告
  13. 阅读---读吴军博士《态度》有感
  14. 【Reinforcement Learning】蒙特卡洛算法
  15. js遍历对象(js遍历对象的所有属性)
  16. div和span的标签属性及说明
  17. A comprehensive overview of knowledge graph completion
  18. 临摹 x 科幻 x AI | MixTalk S01-09
  19. 关于《Foxit Phantom的完美破解》的一点补充——打印驱动破解
  20. Ackerman函数 非递归 java_Ackerman函数的非递归实现.

热门文章

  1. 结构体:struct关键字
  2. oracle查询学生人数语句,Oracle期末复习题-带答案
  3. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)
  4. php易错,PHP学习1:几种常见数据类型及其易错点
  5. php 连接oracle乱码,PHP查询oracle数据显示乱码问题
  6. 力扣268.丢失的数字
  7. Redis 阶段总结
  8. MySQL存储过程 游标
  9. hihoCoder挑战赛25
  10. markdown编辑器 使用语法