以下是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_Oracle def 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 fir
else:
conn.commit()
c.close()
conn.close() def exec_sql(userInfo,dbStr,sql):
if sql.startswith('select'):
results = interact_db(userInfo,dbStr,sql)
return results
else:
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_sql dbStr = '@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. Python中的属性访问与描述符

    Python中的属性访问与描述符 请给作者点赞--> 原文链接 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个nam ...

  2. Entity FrameWork 中使用Lambda访问数据库性能优化

    在使用Entity Framework 访问数据库时,我们经常使用Lambda表达式,但是如果不小心的话,很容易就掉到坑里了.比如下面的例子:用Lambda访问MSSqlServer中的NewsInf ...

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

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

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

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

  5. 2017.11.12 web中JDBC 方式访问数据库的技术

    JavaWeb------ 第四章 JDBC数据库访问技术 在JavaWeb应用程序中数据库访问是通过Java数据库连接(JavaDateBase Connectivity简称JDBC)数据库的链接一 ...

  6. Python中通过cx_oracle操作ORACLE数据库的封闭函数

    哈哈,看来我的SQL自动化发布,马上就全面支持ORACLE,MYSQL,POSTGRESQL,MSSQL啦... http://blog.csdn.net/swiftshow/article/deta ...

  7. Python中从SQL型数据库读写dataframe型数据

    Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...

  8. 关于python中phantomjs无法访问网页的处理

    笔者使用的系统是linux ubuntu,最近在学习爬虫的过程中遇到了一个抓狂的问题,我尝试使用selenium加phantomjs来登陆网页的时候,Pythony一直提示selenium无法找到元素 ...

  9. VS2017新建MVC+ORM中的LinqDb访问数据库项目

    1.前提概述 ORM对象关系映射(Object-Relational Mapping)是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从效果上说,它其实是创建了一个可在编程语言 ...

随机推荐

  1. MySQL 常用函数列表

    一.数学函数 select SQRT (2) --取平方根select ABS (-234) --取绝对值select FLOOR (COUNT (*)/5.0) from news --取小于这个小 ...

  2. Eclipse中进行Gradle+Jetty部署的web项目的断点调试

    1.自行配置好build.gradle文件和按照gradle的web项目目录结构规范建立java.resourece和webapp文件夹 可在build.gradle文件中自由设定“http端口” 1 ...

  3. node.js http.get 和http.post 数据

    http.get('http://codestudy.sinaapp.com', function (response) {}); node.js http post 样例: var reqData= ...

  4. 自定义view(使用EditTetx实现记事本特效)

    先看一下效果图: 思路: 创建一个类,继承自EditText,在onDraw方法中绘制我们的下划线,通过屏幕的高度和每行控件的高度的比值得出屏幕中应该绘制多少行下划线,再来实现一些自定义的属性,设置控 ...

  5. JDBCTest

    package com.atguigu.spring.jdbc; import java.sql.SQLException; import java.util.ArrayList; import ja ...

  6. 对linux的根目录执行强制递归移除

    开始开始时使用: #rm -f -r / 提示对根目录使用递归操作很危险,然后就没执行成功,让使用 --no-preserve-root 这个参数. 好吧,反正是虚拟机 于是执行: #rm -f -r ...

  7. Inside TSQL Querying - Chapter 1. Logical Query Processing

    Logical Query Processing Phases Summary (8) SELECT (9) DISTINCT (11) <TOP_specification> <s ...

  8. 小心C# 5.0 中的await and async模式造成的死锁

    平时在使用C# 5.0中的await and async关键字的时候总是没注意,直到今天在调试一个ASP.NET项目时,发现在调用一个声明为async的方法后,程序老是莫名其妙的被卡住,就算声明为as ...

  9. Openstack的配额共功能的使用

    在一个云系统中,一个项目不能无限制的使用资源,必须对项目进行配额管理,在openstack中主要的命令是nova quota-update, 但是可能会提示的错误: DEBUG (shell:740) ...

  10. android自定义view属性

    第一种 /MainActivity/res/values/attrs.xml <?xml version="1.0" encoding="utf-8"?& ...