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 交互的更多相关文章

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

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

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

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

  3. Python学习——实现文件交互的学生管理系统

    第一次用写博客,从前一直在博客园上学习,现在也来这里分享一下我的学习成果. 就开门见山的说吧.首先做了一个流程图,可能也不符合啥规范,就当草稿用,将就着看,明白个设计思路就行. 1.首先系统初始化,定 ...

  4. 总结:Python学习 和 Python与C/C++交互

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

  5. python学习第二天:命令行模式和python交互模式

    命令行模式 安装完python开发环境和工具之后,在Windows开始菜单选择"命令提示符",就会进入到命令行模式: 或者都可以,然后 点击enter键,弹出下图中的窗口,即命令行 ...

  6. Python学习day41-数据库(1)

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

  7. Python学习--01入门

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

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

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

  9. python学习心得第四章

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

随机推荐

  1. contenteditable设置元素可编辑

    需求背景 实现一个输入框,高度可以随着输入文字的增加而自动增高 有placeholder,输入为空时,显示placeholder 我们知道可以将div的contenteditable设置伪true,将 ...

  2. system v 共享内存

    #include <stdio.h> #include <string.h> #include <errno.h> #include <unistd.h> ...

  3. 嵌入式C编程代码优化笔记

    [优化永远是追求某种平衡而不是走极端,优化是有侧重点的,优化是一门平衡的艺术,它往往要以牺牲程序的可读性或者增加代码长度为代价] 1.选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆 ...

  4. [vb.net]控制台进度条的示例

    Private Sub ConsoleProcessBar() Dim isBreak As Boolean = False Dim colorBack As ConsoleColor = Conso ...

  5. java笔记--问题总结

    1. 垃圾回收算法 标记-清除算法 标记-清除算法是最基本的算法,和他的名字一样,分为两个步骤,一个步骤是标记需要回收的对象.在标记完成后统一回收被标记的对象.这个算法两个问题.一个是效率问题,标记和 ...

  6. GDBT

    理论知识: 第四范式自主研发算法GBDT(Gradient Boosting Decision Tree) GBDT是一种基分类器为决策树的集成学习方法.决策树是一种常见的机器学习算法,GBDT中使用 ...

  7. 2018.12.12 codeforces 938E. Max History(组合数学)

    传送门 唉最开始居然把题给看错了. 其实是组合数学傻逼题呢. 题意简述:给出一个数列,定义一个与数列有关的fff函数,fff函数定义如下: 首先f=0,M=1f=0,M=1f=0,M=1,一直重复如下 ...

  8. 2018.11.02 NOIP训练 停车场(线段树)

    传送门 这是一道困饶了我一年的题. 其实就是去年去NOIP提高组试水的时候考的模拟题 但当时我水平不够,跟ykykyk一起杠了一个下午都没调出来. 今天终于AAA了. 其实就是一个维护最长连续0101 ...

  9. 关于上级机构的冲突性测试bug修复

    描述: 1.上级机构可以为空. 2.机构添加时,选择了上级机构,在未提交前,另一用户将该机构删除,然后前一用户再提交表单,提示会保存成功,本操作应该保存失败. 思路:在上级机构不为空时,保存前进行查询 ...

  10. Python-类-dict

    class dict(object): """ dict() -> new empty dictionary dict(mapping) -> new dic ...