python与oracle交互效率,Python学习--和 Oracle 交互

python 连接oracle 数据库

1、安装 cx_oracle

pip install cx_oracle

2、出现

cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "dlopen(libclntsh.dylib, 1): image not found". See https://oracle.github.io/odpi/doc/installation.html#macos for help

错误时解决办法:

去oracle官网下载mac版的64bit的client basic 和client sdk

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

编译安装:

sudo su #切换到root用户

mkdir /Users/guanguan/oracle #创建oracle文件

mv /Users/guanguan/Downloads/instantclient-* /Users/guanguan/oracle #将下载的两个Oracle包放到/Users/guanguan/oracle目录下

cd /Users/guanguan/oracle 进入oracle文件中

unzip instantclient-basic-macos.64-12.1.0.4.0.zip #解压

unzip instantclient-sdk-macos.64-12.1.0.4.0.zip #解压

cd instantclient_12_1/sdk

unzip ottclasses.zip

cd ..

cp -R ./sdk/* .

cp -R ./sdk/include .

ln -s libocci.dylib.12.1 libocci.dylib

ln -s libclntsh.dylib.12.1 libclntsh.dylib

更改环境变量:

vi ~/.bash_profile

export ORACLE_HOME=/Users/guanguan/oracle/instantclient_12_1

export DYLD_LIBRARY_PATH=$ORACLE_HOME

export LD_LIBRARY_PATH=$ORACLE_HOME

然后输入source ~/.bash_profile 或者 . ~/.bash_profile使环境变量生效

5)测试环境变量是否生效

echo $ORACLE_HOME

/Users/guanguan/oracle/instantclient_12_1

6)然后解压安装cx_Oracle:

tar -zxvf cx_Oracle-5.2.1.tar.gz

cd cx_Oracle-5.2.1

python setup.py build

python setup.py install

7)测试cx_Oracle安装是否成功

python

import cx_Oracle

#运行结果结果:

➜ ~ python Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>>

或者 python -c "import cx_Oracle"

➜ ~ python -c "import cx_Oracle" ➜ ~

此时说明已经安装成功啦~

报错信息:

sh-3.2# python -c "import cx_Oracle" /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg/cx_Oracle.py:3: UserWarning: Module cx_Oracle was already imported from /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg/cx_Oracle.pyc, but /Users/guanguan/oracle/cx_Oracle-5.2.1 is being added to sys.path Traceback (most recent call last):File "", line 1, in File "build/bdist.macosx-10.11-intel/egg/cx_Oracle.py", line 7, in File "build/bdist.macosx-10.11-intel/egg/cx_Oracle.py", line 6, in __bootstrap__ ImportError: dlopen(/var/root/.python-eggs/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg-tmp/cx_Oracle.so, 2): Library not loaded: @rpath/libclntsh.dylib.12.1Referenced from: /var/root/.python-eggs/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg-tmp/cx_Oracle.soReason: image not found

解决方法:(删除之前安装的cx_Oracle,设置export FORCE_RPATH=TRUE,重新安装cx_Oracle)

sh-3.2# export FORCE_RPATH=TRUE sh-3.2# pip install cx_Oracle Requirement already satisfied: cx_Oracle in /Library/Python/2.7/site-packages/cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg sh-3.2# cd /Library/Python/2.7/site-packages/ sh-3.2# rm -f cx_Oracle-5.2.1-py2.7-macosx-10.11-intel.egg sh-3.2# pip install cx_Oracle Collecting cx_OracleUsing cached cx_Oracle-5.2.1.tar.gz Installing collected packages: cx-OracleRunning setup.py install for cx-Oracle ... done Successfully installed cx-Oracle-5.2.1

sh-3.2# python Python 2.7.10 (default, Oct 23 2015, 19:19:21) [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>> exit()

==========================================

python对cx_Oracle的简单操作:

#! /usr/bin/python

import cx_Oracle

dsnStr = cx_Oracle.makedsn("127.0.0.1", "1521", "orcl")

conn = cx_Oracle.connect(user="test", password="test", dsn=dsnStr)

c=conn.cursor()

x=c.execute('select *from TEST.TEST p WHERE ID<2')

print (x.fetchone())

c.close()

conn.close()

Python学习--和 Oracle 交互(2)

当在 mac 电脑上用 Python 读取 oracle 数据库中的中文时,有可能返回数据为“?” 解决方案: 在数据库操作的函数前添加以下代码, import sysreload(sys)sys.s ...

Python学习之——Oracle数据库连接

一.安装Oracle客户端 1.下载对应安装文件,官网地址:http://www.oracle.com/technetwork/database/database-technologies/insta ...

总结:Python学习 和 Python与C&sol;C&plus;&plus;交互

本篇仅仅是Python的学习和Python和C++数据对接过程中的一些总结. 由于工作的需要,用一周的时间学习 Python. Python是基于C实现的一门解释型语言,由于其易用性,俘获了不少开发者 ...

Python学习day41-数据库&lpar;1&rpar;

figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

Python学习--01入门

Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

python学习笔记系列----(八)python常用的标准库

终于学到了python手册的最后一部分:常用标准库.这部分内容主要就是介绍了一些基础的常用的基础库,可以大概了解下,在以后真正使用的时候也能想起来再拿出来用. 8.1 操作系统接口模块:OS OS模块 ...

python学习心得第四章

python 学习心得第四章 1.lambda表达式 1:什么是lambda表达式 为了简化简单函数的代码,选择使用lambda表达式 上面两个函数的表达式虽然不一样,但是本质是一样的,并且lamb ...

180分钟的python学习之旅

最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

Python学习【第二篇】Python入门

Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

随机推荐

toast组件小结

简介:toast是"吐司"的意思,它属于android杂项组件,是一个简单的消息提示框,类似于javascript中的alert. 作用 显示文本 显示图片 显示图文 3.常用方法 ...

&lbrack;CareerCup&rsqb; 5&period;1 Insert Bits 插入位

5.1 You are given two 32-bit numbers, N and M, and two bit positions, land j. Write a method to inse ...

用jq移除某一个特定样式

用JQ移除样式中的某条单独的样式,实际移除不了的,只能将其赋值为空$(function(){ $(".tableStyle").css("background-color ...

二手奢侈品电商Vestiaire Collective融资2000万美元

巴黎奢侈品电商Vestiaire Collective获得了2000万美元的C轮融资,投资方包括知名出版集团Condé Nast.Idinvest.Balderton和Ventech,其中Condé ...

js传参java接收乱码解决方案

js传参处理 encodeURI(encodeURI(name)); java接收处理 URLDecoder.decode(request.getParameter("name") ...

Android多线程及异步处理问题

1.问题提出 1)为何需要多线程? 2)多线程如何实现? 3)多线程机制的核心是啥? 4)到底有多少种实现方式? 2.问题分析 1)究其为啥需要多线程的本质就是异步处理,直观一点说就是不要让用户感觉到 ...

js动画学习(二)

四.简单动画之缓冲运动 实现速度的缓冲,即不同位置的速度不同,越靠近目标值速度越小,所以速度值与目标值与当前值之差成正比.这里要注意一个问题就是物体在运动中速度是连续变化的,不是按照整数变化的,当物体 ...

C&num;中partial关键字

1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许我们将一个类.结构或接口分成几个部分,分别实现在几个不同的.cs文件中. 局部类型适用于以下情况: (1) 类型特别大,不宜放在 ...

Django配置后台xadmin管理界面

Django配置后台xadmin管理界面 python版本3.6.5 Django版本1.10.8(刚开始是2.1.5,由于各种错误,改成了低版本) 1.xadmin的安装,下载地址https://g ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值