开发者社区> 天外归云> 正文

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

简介: 以下是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没问题,安装成功。
+关注继续查看
以下是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中的异常处理总结
Python中的异常处理总结
115 0
【蓝桥杯考前一天总结PYthon终结篇】
【蓝桥杯考前一天总结PYthon终结篇】
62 0
Python蓝桥杯易错点整理和心得总结【一】
Python蓝桥杯易错点整理和心得总结【一】
92 0
【蓝桥杯真题】18天Python组冲刺 心得总结
【蓝桥杯真题】18天Python组冲刺 心得总结
57 0
集合覆盖问题 贪婪算法反思总结 Python
集合覆盖问题 贪婪算法反思总结 Python
85 0
Python中的时间序列数据操作总结
在本文中,我们介绍时间序列数据的索引和切片、重新采样和滚动窗口计算以及其他有用的常见操作,这些都是使用Pandas操作时间序列数据的关键技术。
80 0
进行图像增广(数据扩充)的15种功能总结和Python代码实现(三)
进行图像增广(数据扩充)的15种功能总结和Python代码实现
175 0
进行图像增广(数据扩充)的15种功能总结和Python代码实现(二)
进行图像增广(数据扩充)的15种功能总结和Python代码实现
67 0
进行图像增广(数据扩充)的15种功能总结和Python代码实现(一)
进行图像增广(数据扩充)的15种功能总结和Python代码实现
482 0
python基础语法总结
python基础语法总结
71 0
+关注
天外归云
测试开发工程师,目前就职于网易。
文章
问答
视频
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多