以下是Python中通过cx_Oracle操作数据库的过程中我所遇到的问题总结,感谢我们测试组的前辈朱勃给予的帮助最终解决了下列两个问题:
1)安装cx_Oracle会遇到的问题:在Windows下安装cx_Oracle不要尝试用pip install的方式了!下载官网的对应版本的msi安装文件,我的python2.7是32位的,oracle的instantClient也是32位的,这个cx_Oracle也选择32位的下载,安装成功后进入python模式下import cx_Oracle没问题,安装成功。

2)使用cx_Oracle会遇到的问题:在通过cx_Oracle访问数据库的过程中,如果出现“InterfaceError: Unable to acquire Oracle environment handle”的错误!把oracle客户端的所有文件拷贝到“D:\Python27\Lib\site-packages”即Python的安装路径根目录下(因为不知道具体要拷贝哪些,就全拷贝了),如下图所示:
以下是通过cx_Oracle远程访问oracle数据库的方式(保存在本地文件夹下的execute_sql.py文件中):
# -*- coding: utf-8 -*-
import cx_Oracledef interact_db(userInfo,dbStr,sql):connStr = userInfo + dbStr conn = cx_Oracle.connect(connStr)    c = conn.cursor()                                       c.execute(sql)if sql.startswith('select'):fir=c.fetchall()conn.commit()             c.close()                                 conn.close()return firelse:conn.commit()             c.close()                                 conn.close()def exec_sql(userInfo,dbStr,sql):if sql.startswith('select'):results = interact_db(userInfo,dbStr,sql)return resultselse:interact_db(userInfo,dbStr,sql)

userInfo这个变量里存的是用户信息,格式为'用户名/密码';

dbStr变量里存的是数据库连接字符串,格式为'@HOST:PORT/SERVICE_NAME'。例子如下:
dbStr = '@20.129.340.851:8885/test'
userInfo = 'userName/passWord'

用户名密码后面那些信息(数据库连接字符串)可在本地oracle客户端文件夹下的“TNSNAMES.ORA”文件中查看,如下图位置所示:

之后在其他的脚本中就可以调用这个数据库访问脚本来实现对数据库的操作了。例子如下:

# -*- coding: utf-8 -*-
from execute_sql import exec_sqldbStr = '@HOST:PORT/SERVICE_NAME'
userInfo = 'username/password'#查询
dbSql = 'select xx from xxx where a like \'%aaa%\''
r = exec_sql(userInfo,dbStr,dbSql)
tip  = u'XXXXXXX:'+r[0][0]

Python中通过cx_Oracle访问数据库遇到的问题总结相关推荐

  1. cx_oracle主备服务器,怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作

    怎么在Python中使用cx_Oracle模块对Oracle数据库进行操作 发布时间:2021-03-17 16:32:34 来源:亿速云 阅读:67 作者:Leah 本篇文章为大家展示了怎么在Pyt ...

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

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

  3. Oracle中如何记录访问数据库的登录信息?

    曾有同学问过,能不能知道都有谁登陆过Oracle数据库, 碰巧看到老杨的这篇历史文章<Oracle中如何记录访问数据库的登陆信息>,介绍了几种实现这个需求的方案,学习一下. 1. 有哪些审 ...

  4. Python学习笔记:访问数据库

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. python中根据URL获得数据库的名称及IP

    URL样例: # url 示例1 jdbc:oracle:thin:@172.16.2.32/orclis   # url 示例2 jdbc:oracle:thin:@172.16.2.31:1521 ...

  6. Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  7. Python 中的属性访问与描述符

    在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...

  8. springboot几种注入_Spring Boot中使用JdbcTemplate访问数据库

    本文介绍在Spring Boot基础下配置数据源和通过JdbcTemplate编写数据访问的示例. 数据源配置 在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式. ...

  9. springboot项目在线程中调用service访问数据库

    创建类ApplicationBeanFactory package com.xxx.comm.ApplicationBeanFactory;import org.springframework.bea ...

最新文章

  1. ggplot2笔记6:标度、轴和图例
  2. 如何基于OSS和MPS,快速搭建音视频文件上传服务?
  3. 同步两个数据库的结构或者数据
  4. Android Volley完全解析1:初识Volley的基本用法
  5. REST / HTTP方法:POST与PUT与PATCH
  6. 如何同时让多台服务器安装系统,如何同时安装多台服务器?
  7. centos php日志分析,Centos日志查看分析
  8. 使用高速通道加速iOS版本审核
  9. 一个神奇的???whatever~~
  10. pycharm 变量批量重命名
  11. 2022年 27 个最佳 UX/UI 设计灵感网站
  12. 公共DNS递归服务器(转发)
  13. 网记者采访时,一直称李某萍为“妻子”
  14. 【埋点】是什么埋点?简述埋点的操作流程
  15. Go语言自学系列 | 高效golang开发
  16. Android 蓝牙 -- 还原网络设置 删除蓝牙所有存储配对信息流程分析---全网唯一
  17. 访问项目无法访问 此网站192.168.*** 拒绝了我们的连接请求。
  18. DDoS攻击的一些防护方法
  19. Capacitor 新一代混合应用“神器” 会代替Cordova吗??
  20. pytorch中的Variable还有必要使用吗?

热门文章

  1. java监听表变化_「Java Web开发」Filte(过滤器)、Listener(监听器)
  2. 2021高考成绩查询镇远一中,【护航高考 消防同行】——镇远消防圆满完成高考期间消防安保任务...
  3. 滚动条样式设置_自定义滚动条样式
  4. mysql 一对多 根据多条数据排序_优化的道路永无止境——Mysql的ICP及MRR
  5. 计算机二级宏相关例题,计算机等级考试二级Access练习题
  6. matlab能流图,有会用MATLAB写海流图的程序吗
  7. pycharm TabError: inconsistent use of tabs and spaces in indentation
  8. Lesson6 how to use HTML QT Widgets
  9. pytorch Inception代码实现
  10. 【opencv】图像特征与描述