python实时连接oracle_Python连接Oracle

Python连接Oracle

当前环境:Linux Centos 7

1. 下载安装包cx_Oracle

由于我本地Python版本是2.7,所以选择是2.7版本

wget https://pypi.python.org/packages/e1/18/00987c6a9af9568ee87d1fcba877407684a3f1b87515e5eb82d5d5acb9ff/cx_Oracle-6.0rc1-py27-1.x86_64.rpm#md5=ff8f5cce07bd5ec8ed3ce5c79d451474

参考:

2. 安装cx_Oracle

安装:

rpm -ivh cx_Oracle-6.0rc1-py27-1.x86_64.rpm

查看当前python引入模块库的路径

[root ~]# python

Python 2.7.5 (default, Nov 6 2016, 00:28:07)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import sys

>>> print sys.path

['', '/usr/lib/python2.7/site-packages/AliyunUtil-0.0.1-py2.7.egg', '/usr/lib/python2.7/site-packages/cloud_init-0.7.6-py2.7.egg', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages']

检查安装路径,如果cx_Oracle.so文件不在以上python引入路径内需要将该文件拷贝到以上python引入路径,所以我这里不需要进行拷贝操作

[root ~]# rpm -qa | grep cx_Oracle | xargs rpm -ql

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/PKG-INFO

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/SOURCES.txt

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/dependency_links.txt

/usr/lib64/python2.7/site-packages/cx_Oracle-6.0rc1-py2.7.egg-info/top_level.txt

/usr/lib64/python2.7/site-packages/cx_Oracle.so

3. 下载Oracle Library

由于Oracle官网下载东西存在Auth认证,所以简单点就点击选中的rpm包保存在windows上,然后上传到linux上即可

注意:

下载的版本要和连接的Oracle基本一致,我需要连接的Oracle版本是11.2,所以我下载的是oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

操作系统要和之前下载的cx_Oracle要一致,这很重要!!!我在这个上面栽了跟头,花了比较多的时间。。。所以我需要下载64位的

在Oracle官网下载东西你得先勾选Accept License Agreement,否则你下载不了

其次你得有Oracle的账号

4. 安装Oracle Library

rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm

5. 配置环境变量

修改Oracle安装路径

将client64改为client,至于为什么要改暂时还不清楚,只知道不改的话会报错Oracle Client library cannot be loaded: libclntsh.so: cannot open shared object file: No such file or directory

cd /usr/lib/oracle/11.2/

mv client64 client

打开~/.bashrc,追加环境变量路径

vim ~/.bashrc

配置环境变量

// 查看Oracle安装路径

[root@iZbp180vortqapb7yf8217Z ~]# rpm -qa | grep oracle | xargs rpm -ql

/usr/lib/oracle/11.2/client64/bin/adrci

/usr/lib/oracle/11.2/client64/bin/genezi

/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1

/usr/lib/oracle/11.2/client64/lib/libnnz11.so

/usr/lib/oracle/11.2/client64/lib/libocci.so.11.1

/usr/lib/oracle/11.2/client64/lib/libociei.so

/usr/lib/oracle/11.2/client64/lib/libocijdbc11.so

/usr/lib/oracle/11.2/client64/lib/ojdbc5.jar

/usr/lib/oracle/11.2/client64/lib/ojdbc6.jar

/usr/lib/oracle/11.2/client64/lib/xstreams.jar

// 追加ORACLE_HOME环境变量路径

export ORACLE_HOME=/usr/lib/oracle/11.2/client

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

生效配置

source ~/.bashrc

6. 检查是否可以引入cx_Oracle

import没有报错,说明之前的辛苦没有白费

[root client64]# python

Python 2.7.5 (default, Nov 6 2016, 00:28:07)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import cx_Oracle

>>>

7. 连接Oracle

一个插入n条数据的Python脚本:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import sys

import cx_Oracle

import time

rows = int(sys.argv[1])

con = cx_Oracle.connect('test/test@sampledb')

cur = con.cursor()

cur.execute("SELECT MAX(ID) FROM PTTEST")

max_id = cur.fetchone()[0] or 0

start_id = max_id + 1

for i in xrange(rows):

cur.execute("INSERT INTO PTTEST (ID, NAME, AGE, GENDER, SALARY)VALUES(%d, 'pt', 15, 'male', 50000)" % int(i + start_id))

if i % 100 == 0:

time.sleep(3)

print 'Insert rows [%d]:%d' % (int(time.time()), i)

con.commit()

cur.close()

con.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言字符串函数大全

转载自http://www.360doc.com/content/08/0723/22/26860_1462024.shtml# C语言字符串函数大全 函数名: stpcpy 功能: 拷贝一个字符串到另一个 用法: char *stpcpy(char *destin, char *source); 程序例: #include<stdio.h> #include<string.h> int main(void) { ch…

Makefile中 -I -L -l区别

转载自&#xff1a;http://blog.csdn.net/davion_zhang/article/details/41805641 我们用gcc编译程序时&#xff0c;可能会用到“-I”&#xff08;大写i&#xff09;&#xff0c;“-L”&#xff08;大写l&#xff09;&#xff0c;“-l”&#xff08;小写l&#xff09;等参数&am…

PLT redirection through shared object injection into a running process

PLT redirection through shared object injection into a running process

python电脑版软件下载_Python for windows

Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器,我们用的比较多的是C版本的Python,也就是使用C语言实现的Python解释器,除此之外还有使用Java实现的Jython和使用.NET实现的IronPython,这些实现可以使Python用…

Struts优缺点

跟Tomcat、Turbine等诸多Apache项目一样&#xff0c;是开源软件&#xff0c;这是它的一大优点。使开发者能更深入的了解其内部实现机制。 Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术的Web应用时更加容易…

由Google Protocol Buffer的小例子引起的g++编译问题

问题 学习 Google Protocol Buffer 的使用和原理时&#xff0c;提供了一个小例子&#xff0c;讲述了protobuf的使用方法。 假如已经有了如下文件&#xff1a; 其中writer.cpp如下&#xff1a;#include "lm.helloworld.pb.h" #include<iostream> #include<…

用python编写表达式求值_用Python3实现表达式求值

Problem Description yizhen has no girlfriend due to his stupid brain that he even can’t solve a simple arithmetic roblem. Can you help him If you solve it and tell him the result, then he can find his lovers! So beautiful! Input The input一、题目描述请用 …

the first day

开博第一天&#xff0c;从此记录我生活学习的点滴&#xff0c;加油转载于:https://www.cnblogs.com/fkissx/p/3702132.html

驱动-问题解决

今天在网上买了一个二手的电脑&#xff0c;拿回来以后&#xff0c;发现有点问题&#xff0c;一个问题就是 1.usb插上U盘以后没有反应 解决方法&#xff1a; 尝试一、直接在网上下载了一个360驱动大师&#xff0c;更新了一下驱动&#xff0c;没有解决 尝试二、在网上下载了一个驱…

Swift 学习- 02 -- 基础部分2

class NamedShape{ var numberOfSides: Int 0 var name: String init(name: String) { self.name name } func simpleDecription() -> String { return "A shape with \(numberOfSides) \(name) sides" } } // 除了储存简单的属性之外,属性可以有 getter 和 set…

R-CNN detection 运行问题及办法

运行caffe官方提供的jupyter 的rcnn detection&#xff0c;总是出现各种问题。先将问题及方法汇集在此&#xff1a; 1. Selective Search 的安装问题 按照官网&#xff0c;我下载了selective_search_ijcv_with_python&#xff0c;但是在我的linux matlab2017a上总是出现问题&…

python怎么用lambda和map函数_Python之lambda匿名函数及map和filter的用法

现有两个元组((a),(b)),((c),(d))&#xff0c;请使用python中匿名函数生成列表[{a:c},{b:d}]t1 ((a), (c))t2 ((b), (d))print(list(map(lambda t: {t[0]: t[1]}, zip(t1, t2))))l lambda t1, t2: [{i: j} for i, j in zip(t1, t2)]print(l(t1, t2))map内置函数使用&#xf…

UVALive 5903 Piece it together(二分图匹配)

给你一个n*m的矩阵&#xff0c;每个点为B或W或.。然后你有一种碎片。碎片可以旋转&#xff0c;问可否用这种碎片精确覆盖矩阵。N,M<500 WB 《碎片 W 题目一看&#xff0c;感觉是精确覆盖&#xff08;最近被覆盖洗脑了&#xff09;&#xff0c;但是仔细分析可以知道&#xf…

将undefault和null的数据转换成bool类型的数据 使用!!

<script> var o{}; var anull; console.info(!!o.name); </script> 输出false 此方法是将undefault和null的数据转换成bool类型的数据. var model avalon.define({ $id: model, defaultvalue {},});<span ms-if"!!defaultvalue .cost" >测试</…

springcloud(五):熔断监控Hystrix Dashboard和Turbine

Hystrix-dashboard是一款针对Hystrix进行实时监控的工具&#xff0c;通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。但是只使用Hystrix Dashboard的话, 你只能看到单个应用内的服务信息, 这明显不够. 我们需要一个工具能让我们…

如何修改PKG_CONFIG_PATH环境变量

两种情况&#xff0c;如果你只是想加上某库的pkg&#xff0c;则选择下面其一&#xff1a;export PKG_CONFIG_PATH/usr/lib/pkgconfig/ 或者 export PKG_CONFIG_LIBDIR/usr/lib/pkgconfig/ 如果你想覆盖掉原来的pkg,选择后者。因为&#xff1a;PKG_CONFIG_LIBDIR的优先级比 PKG_…

python跨包导入包_python引入跨模块包

人生苦短&#xff0c;我学python。最近学习python&#xff0c;由于包的模块分的比较多。所以要用到跨模块引入 且调用中间的方法整体目录结构如下。需求&#xff1a;在 API模块 user.py 中 调用 plugin 模块中 douyin_login 下的方法。贴一下最终解决方案&#xff1a;from plug…

jdk1.8版本已经不包含jdbc.odbc连接

连接access的时候发现报错&#xff0c;无法加载jdbc.odbc类文件&#xff0c;到Java安装目录上jre/lib/rt.jar上找jdbcodbc类也没有了。 找个jdk1.7安装就ok啦。转载于:https://www.cnblogs.com/dohn/p/3707254.html

位运算问题

位运算 位运算是把数字用二进制表示之后&#xff0c;对每一位上0或者1的运算。 理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。在程序员的圈子里有一个流传了很久的笑话&#xff0c;说世界上有10种人&#xff0c;一…

conda环境管理介绍

我们可以使用conda 来切换不同的环境&#xff0c;主要的用法如下&#xff1a; 1. 创建环境 # 指定python版本为2.7&#xff0c;注意至少需要指定python版本或者要安装的包 # 后一种情况下&#xff0c;自动安装最新python版本conda create -n env_name python2.7# 同时安装必…