一、库连接步骤

1、下载cx_Oracle模块

下载步骤

工具 pycharm :File--->右键setting--->找到Project Interpreter  ----->在此位置搜索下载相应的模块进行下载即可

搜索想要安装的模块,选中之后Install   package即可

2、python连接代码编写

前提:虚拟机上的window7上32位的Oralce11.2.0版本的数据库、表Python_Oracle ,以及表中有一些测试数据

"""
---------------------------------------
Author:Zjh
Date: -- :
---------------------------------------
"""
import cx_Oracle
#连接Oracle数据库
class Connection():
def OracleConn(self):
# xnj = """
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.27.4)(PORT = ))
# (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()
#数据库操作
#.查询
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 in result: #循环遍历,查询得到的结果集
print(i) #.插入操作 cursor.close()
highway.close()
pass
pass if __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的方式以及过程中遇到的问题的更多相关文章

  1. Sql server2012连接Sql server 2008时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误。(provider:SSL Provider,error:0-接收到的消息异常,或格式不正确。)

    以前连接是正常的,就这两天连不上了.(没有耐心的直接看末尾解决办法) 错误消息如下: 1.尝试读取或写入受保护的内存.这通常指示其他内存已损坏.(System.Data) 2.已成功与服务器建立连接, ...

  2. vs 或 Sql server2012连接Sql server时出现的问题:已成功与服务器建立连接,但在登陆过程中发生错误

    以前连接是正常的,就这两天连不上了.(没有耐心的直接看末尾解决办法) 错误消息如下: 1.尝试读取或写入受保护的内存.这通常指示其他内存已损坏.(System.Data) 2.已成功与服务器建立连接, ...

  3. python 连接 Oracle 乱码问题(cx_Oracle)

    用python连接Oracle是总是乱码,最后发现时oracle客户端的字符编码设置不对. 编写的python脚本中需要加入如下几句: import os os.environ['NLS_LANG'] ...

  4. Python 连接Oracle数据库

    连接:python操作oracle数据库  python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...

  5. sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL Server,错误:233) 然后再连接:错误:18456

    问题:sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误.(provider:命名管道提供程序,error:0-管道的另一端上无任何进程.)(Microsoft S ...

  6. python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

    python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import cre ...

  7. Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

  8. Python连接Oracle问题

    Python连接Oracle问题 1.pip install cx_oracle 2.会出现乱码问题:     方法一:配置环境变量     export NLS_LANG="SIMPLIF ...

  9. 【转】SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

    SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误 最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS ...

随机推荐

  1. linux 安装 Django14

    一.实际安装过程(只操作这一步就可以安装) ## 下载并安装 rpm -ivh http://cbs.centos.org/kojifiles/packages/Django14/1.4.20/1.e ...

  2. jquery tagsinput监听输入、修改、删除事件

    个人博客 地址:http://www.wenhaofan.com/article/20181118192458 由于度娘上的根本搜不到对应的操作,连该插件对应的文档介绍都没有,不得已debug了源码才 ...

  3. AtCoder arc078_d Mole and Abandoned Mine

    洛谷题目页面传送门 & AtCoder题目页面传送门 给定一个无向连通带权图\(G=(V,E),|V|=n,|E|=m\)(节点从\(0\)开始编号),要删掉一些边使得节点\(0\)到\(n- ...

  4. HTML连载62-固定定位练习、z-index属性

    一.固定定位应用场景 1.练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  5. CriteriaBuilder jpa 日期date查询

    概要:前端日期选择器选择完之后传一个String到后台,后台的字段的数据类型是date 前端: <label class="layui-form-label" >单据日 ...

  6. 0004 继承django系统用户表

    1 创建基础模型 在本项目中,所有表都有两个自动产生的完全相同的字段,即创建时间和更新时间,因此,可以创建一个基础模型,让所有的表都来继承这个模型. 找到工程目录下的PublicMethod目录,创建 ...

  7. console.log对象全部展开

    挖掘Chrome Console的小秘密 SP_lyu关注 2018.09.15 18:25:32字数 1,697阅读 917 控制台应该是大多数前端开发人员日常开发调试离不开的神器.然而控制台仍有很 ...

  8. 一点点学习PS--实战二

    本节实战,可以学到如何制作gif动图,制作搜狗输入法皮肤 1.工具使用 (1)滤镜--液化--膨胀:这里是制作出猫咪打呼时肚子和气泡胀大的效果 (2)图像--画布大小:可裁剪画布到指定像素,并且裁剪指 ...

  9. 爬取杭电oj所有题目

    杭电oj并没有反爬 所以直接爬就好了 直接贴源码(参数可改,循环次数可改,存储路径可改) import requests from bs4 import BeautifulSoup import ti ...

  10. 【转】常见的hash算法及其原理

    Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是 ...