一,想访问远程Oracle数据库,本地又不想安装几百兆的Oracle Client(也木有root权限),安装python的cx_Oralce 模块需要依赖Oracle Instant Client 代替完整的Oracle Client。

Oracle Instant Client 下载:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

下载:

  1. instantclient-basic-linux.x64-11.2.0.4.0.zip
  2. instantclient-sqlplus-linux.x64-11.2.0.4.0.zip
  3. instantclient-sdk-linux.x64-11.2.0.4.0.zip

解压文件放到如下目录:

$HOME/oracle/instantclient_11_2

拷贝tnsnames.ora文件,在/home/oracle/instantclient_11_2目录下创建network/admin目录,并将tnsnames.ora文件拷贝进去(这个貌似不是必要条件,出了问题的话就补上吧)

~/.bashrc设置:

export ORACLE_HOME=$HOME/oracle/instantclient_11_2
export TNS_ADMIN=$ORACLE_HOME/network/admin
export DYLD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH

下面就是该安装cx_Oracle的python模块了,下载直接python setup.py install

由于非root的权限,会报无/lib64/python2.6/site-packages/目录读写权限

可以改写python的安装目录

export PYTHONPATH=$HOME/.local/lib64/python2.6/site-packages/
export PATH=$HOME/.local/bin:$PATH

然后source .bashrc生效

接下来可以安装了:python setup.py install --prefix=~/.local (牛逼闪闪啊,直接在原目录前加了个本地目录前缀,华丽丽的解决非root的壁垒)

顺其自然的又报错了(奔溃呀),/usr/bin/ld: cannot find -lclntsh

这个错误之前在mac上装cx_Oracle时候没遇到,百度解决方案,得知是没有找到lib下的libclntsh.so函数库

其实是有的,只不过名字改了,加软链接:

ln -s libclntsh.so.11.1 libclntsh.so

再次安装解决。

补充:

非root安装rpm包

首先把RPM包解压出来,然后放在自己的目录下,并且添加好环境变量
解压的命令为:
rpm2cpio ctags-5.8-2.el6.x86_64.rpm | cpio -idvm
这样就会按包里的目录结构解压到当前目录,如果是家目录的话,可以在家目录下的.bashrc这样添加环境变量

  1. vim ~/.bashrc
  2. export PATH=$PATH:$HOME/usr/bin/

重新登录或者source ~/.bashrc文件,就可以使用这个程序了

easy_install --prefix=~/.local cx_Oracle

卸载:

python setup.py install --record record.txt --prefix=~/.local
然后删除record.txt里的所有文件

贴段cx_Oracle 使用代码,作为备忘:

import cx_Oracle
class ConnectOracle:
def __init__(self, username, passwd, locate):
self.login = {}
self.db = None
self.cursor = None
self.login['username'] = username
self.login['passwd'] = passwd
self.login['locate'] = locate def connect_oracle(self):
try:
self.db = cx_Oracle.connect(self.login['username'], self.login['passwd'], self.login['locate']) # 登录内搜数据库
self.db.autocommit = False # 关闭自动提交
self.cursor = self.db.cursor() # 设置cursor光标
return True
except:
print 'can not connect oracle'
return False def close_oracle(self):
self.cursor.close()
self.db.close() def select_oracle(self, sql, num=0, temp=None):
if self.connect_oracle():
if temp:
self.cursor.executemany(sql, temp)
else:
self.cursor.execute(sql)
if num:
content = self.cursor.fetchmany(num)
else:
content = self.cursor.fetchall()
self.close_oracle()
return content
return False def insert_oracle(self, sql, temp=None):
try:
self.connect_oracle()
if temp:
self.cursor.executemany(sql, temp)
# 执行多条sql命令
else:
self.cursor.execute(sql)
except:
print "insert异常"
self.db.rollback() # 回滚
finally:
self.db.commit()
self.close_oracle()

二 安装mysql的操作模型:MySQLdb

先安装依赖程序:yum install python-devel mysql-devel zlib-devel openssl-devel

三 安装mysql的操作模型:Tornado

Tornado是非阻塞的开源的web服务器

下载安装地址http://www.tornadoweb.cn/

tar xvzf tornado-1.2.1.tar.gz
cd tornado-1.2.1
python setup.py build
sudo python setup.py install

四, ipython

IPYTHON=1 ./bin/pyspark

IPYTHON_OPTS="notebook"  ./bin/pyspark

python 安装cx_Oracle模块, MySQLdb模块, Tornado的更多相关文章

  1. Python 安装cx_Oracle模块

    1.Python安装cx_Oracle模块需要安装Oracle,并在环境变量中添加Oracle的路径. 2.没有安装Oracle的需要下载一个oci.dll的文件,并把文件的路径添加到path中. 如 ...

  2. Linux下查看Python安装了哪些脚本模块

    Linux下查看Python安装了哪些脚本模块 1.什么是rpm ? rpm 即RedHat Package Management,是RedHat的发明之一 .现在包括OpenLinux.fedora ...

  3. Python 安装requests和MySQLdb

    Python 安装requests和MySQLdb 2017年10月02日 0.系统版本 0.1 查看系统版本 [root@localhost ~]# uname -a Linux localhost ...

  4. python安装numpy科学计算模块

    解决两个问题: (1)Import Error: No module named numpy (2)Python version 2.7 required, which was not found i ...

  5. Python安装、卸载第三方模块

    pip command ModuleName command:用于指定要执行的命令(install:安装,uninstall:卸载) ModuleName:需要安装的模块名称 示例: 安装第三方模块n ...

  6. 22.Python安装和卸载第三方模块方法

    安装和卸载第三方开源模块的步骤:下例,安装urllib3模块的步骤. 1.安装开源模块步骤: 按键盘windows键+r键,输出cmd回车.或开始->windows系统->命令提示符: 输 ...

  7. Python安装cx_Oracle与操作数据测试小结

    这里简单总结一下Python操作Oracle数据库这方面的相关知识.只是简单的整理一下之前的实验和笔记.这里的测试服务器为CentOS Linux release 7.5. 个人实验.测试.采集数据的 ...

  8. Python 安装cx_Oracle模块折腾笔记

    kali linux/ubuntu下安装: 不得不说安装这个模块很蛋疼,决定做个记录. sudo apt install build-essential unzip python-dev libaio ...

  9. ubuntu下安装xlrd模块,Mysqldb模块

    Python中安装xlrd模块 1.从 https://pypi.python.org/pypi/xlrd  下载压缩包 2.解压所下载的压缩包 3.CD到解压文件夹,运行 sudo python s ...

随机推荐

  1. 动态规划:HDU1712-ACboy needs your help(分组背包问题)

    ACboy needs your help Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Othe ...

  2. dfs 的全排列

    #include <iostream> #include <algorithm> #include <cstdio> #include <string> ...

  3. J.U.C 系列之 Tools

    JDK 5.0 开始,java并发大师Doug lea 为我们带来了更高效更应用的java并发API Java.util.concurrent包,简称J.U.C J.U.C 体系由如下五个知识结构构成 ...

  4. 5.2 pandas 常用函数清单

    文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名,0,1,2,3... names=['A', 'B', 'C'...] 自定义列 ...

  5. Careercup - Microsoft面试题 - 4639756264669184

    2014-05-12 06:42 题目链接 原题: Write your own regular expression parser for following condition: az*b can ...

  6. 53、listview、expandableListview如何选中时保持高亮?

    一.listView被选中后保持高亮 70down voteaccepted To hold the color of listview item when you press it, include ...

  7. 树中两个结点的最低公共祖先--java

    题目:对于任意一个树,不仅仅限于二叉树,求树中两个结点的最低公共祖先结点. 解析:对于任意一棵树,显然并不局限于二叉树,也就是说树的非叶子结点可能存在多个子节点.所以,我们可以定义两个链表结构,存储这 ...

  8. 【转】C# client 与java netty 服务端的简单通信,客户端采用Unity

    http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分 ...

  9. P2846 [USACO08NOV]光开关Light Switching

    题目描述 Farmer John tries to keep the cows sharp by letting them play with intellectual toys. One of th ...

  10. cf 843 B Interactive LowerBound [随机化]

    题面: 传送门 思路: 这是一道交互题 比赛的时候我看到了直接跳过了...... 后来后面的题目卡住了就回来看这道题,发现其实比较水 实际上,从整个序列里面随机选1000个数出来询问,然后从里面找出比 ...