【Oracle】Python 连接Oracle 数据库

From: http://space.itpub.net/22664653/viewspace-711728

Python 连接Oracle 数据库,需要使用cx_Oracle 包。
1 下载cx_Oracle
该包的下载地址:http://cx-oracle.sourceforge.net/
下载的时候,注意选择与操作系统和oracle版本相对应的cx_Oracle版本。
2 安装
[root@rac3 python]# rpm -ivh cx_Oracle-5.1.1-11g-py24-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:cx_Oracle              ########################################### [100%]

3 测试:   
oracle@rac3:/home/oracle/python>cat test.py 
import cx_Oracle 
username = "yang" 
userpwd = "yang" 
host = "127.0.0.1" 
port = 1523 
dbname = "yangdb" 

dsn=cx_Oracle.makedsn(host, port, dbname) 
connection=cx_Oracle.connect(username, userpwd, dsn) 
cursor = connection.cursor() 
sql = "select * from tab" 
cursor.execute(sql) 
result = cursor.fetchall() 
count = cursor.rowcount 
print "=====================" 
print "Total:", count 
print "=====================" 
for row in result: 
        print row 
cursor.close() 
connection.close()
测试结果:
oracle@rac3:/home/oracle/python>python test.py 
=====================
Total: 9
=====================
('BIG_TABLE', 'TABLE', None)
('BIN$sgD3dAkmWHfgQPoK8Qcq3Q==$0', 'TABLE', None)
('BIND', 'TABLE', None)
('IM_SMS_ADD_FRIEND', 'TABLE', None)
('PARALTAB', 'TABLE', None)
('T1', 'TABLE', None)
('T2', 'TABLE', None)
('T3', 'TABLE', None)
('T4', 'TABLE', None)

遇到的问题:
1 要在oracle 用户才能执行import cx_Oracle
[root@rac3 ~]# python
Python 2.4.3 (#1, Jan 21 2009, 01:11:33) 
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
>>>

如果在oracle 也遇到 ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory
要查看.bash_profile 文件:和环境变量 LD_LIBRARY_PATH有关,一定要设置为:
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;export LD_LIBRARY_PATH
2 ORA-12505: TNS:listener does not currently know of SID given in connect descriptor
oracle@rac3:/home/oracle/python>python test.py 
Traceback (most recent call last):
  File "test.py", line 10, in ?
    connection=cx_Oracle.connect(username, userpwd, dsn) 
cx_Oracle.DatabaseError: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor

oracle@rac3:/opt/oracle/11.2.0/alifpre/network/admin>cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /opt/oracle/11.2.0/alifpre/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

yangdb =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.250.7.241 )(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = yangdb)
    )
  )
listener.ora 文件中
SID_LIST_LISTENER =
      (SID_LIST =
         (SID_DESC =
           (SID_NAME = PLSExtProc)
             (ORACLE_HOME = /opt/oracle/11.2.0/alifpre)
           (PROGRAM = extproc)
         )
        (SID_DESC =
          (GLOBAL_DBNAME = yang)
           (ORACLE_HOME = /opt/oracle/11.2.0/alifpre)
          (SID_NAME =yangdb)
         )
     )

  (GLOBAL_DBNAME = yang)与tnsnams.ora 文件中的tns连接名不一致导致,修改为yangdb,重新启动监听或者lsnrclt reload 即可

 

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

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

相关文章

php评星,jQuery+PHP星级评分实现方法

搜索热词本例实现的效果&#xff1a;过渡动画显示评分操作。及时更新平均得分和用户所评的分数。后台限制用户重复评分操作&#xff0c;并在前端及时显示。XHTMLHTML结构分为用于显示灰星星div#big_rate、亮星星div#big_rate_up、分数span#s及span#g和提示信息div#my_rate。CSS…

Web Api无法访问 404

最近需要在项目中添加一个Web Api&#xff0c;项目是.net mvc4项目。要想添加一个api&#xff0c;无论你怎么封装&#xff0c;无非就是在Application_Start方法中将WebApi的路由注册进去就行了。例如如下代码&#xff1a; public static class WebApiConfig{public static void…

RHE5服务器配置——Samba服务器

Samba的核心 Samba的核心是两个守护进程&#xff0c;即smbd和nmbd。服务器启动到停止期间持续运行&#xff0c;smba监听139TCP端口&#xff1b;nmbd监听137和 138UDP端口。smbd和nmbd使用的全部配置信息保存在smb.conf文件中&#xff0c;smb.conf向smbd和nmbd两个守护进程说明输…

python 数据库模块

From: http://www.cnblogs.com/czh-liyu/archive/2008/04/22/1165213.html 目录 专用数据库连接模块 MySQL SQLite PostgreSQL Oracle IBM DB2 SAP DB Infomix Interbase Ingres Sybase SQL Server ThinkSQL Matisse 通用数据库接口模块 ODBC JDBC SQLRelay 其它模块 Gadfly …

PHP检查微信域名屏蔽接口,微信域名检测API接口,实时查询域名是否被微信拦截...

微信域名检测API接口的应用场景&#xff1a;由于微信对外部链接内容规范比较严格&#xff0c;所以可能一不小心就会被判定为是违反内容规范的&#xff0c;或被同行恶意举报投诉之类的。那么此时就要用到微信域名检测接口&#xff0c;实时检测域名的状态&#xff0c;实时查询域名…

lhgdialogV2.37 使用

/Files/tiger8000/lhgdialogV2.37完整版.rar parent.aspx 父页面&#xff1a; <script src"../lhgdialog/lhgcore.min.js" type"text/javascript"></script> <script src"../lhgdialog/lhgdialog.js" type"text/javascript&…

NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享

原文地址&#xff1a; http://my.oschina.net/u/1791256/blog/283064 TOMCAT7.0 NGINX MEMCACHED memcached-session-manager 实现SESSION共享 http://blog.csdn.net/nerissa/article/details/18961361 ; //参考博客 http://pan.baidu.com/s/1pJlZ0mB //相关包下载&#…

实验二十四、OSPF 在NBMA 环境中点到点的配置

实验二十四、OSPF 在NBMA 环境中点到点的配置 一、 实验目的 1. 掌握NBMA 环境中点到点的配置 2. 理解NBMA 环境中点到点网络类型的意义 二、 应用环境 在帧中继的网络中&#xff0c;OSPF 的路由更新不能正常进行&#xff0c;需要配置点到点的网络类型保证OSPF 协议的正常运行…

java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)

服务器&#xff1a;public class Chat {public static void main(String[]args) throws IOException{System.out.println("服务器启动中...");//创建服务器ServerSocket servernew ServerSocket(9999);//阻塞式等待连接&#xff0c;当客户端Socket创建好以后才开启wh…

英语------------单词复数形式的规律

1、名词由单数变复数的基本方法如下&#xff1a; ①在单数名词词尾加s。如&#xff1a;map → maps,boy→ boys,horse→ horses, table→ tables. ②s,o,x ,sh,ch结尾的词加es.如&#xff1a;class→classes, box→boxes, hero→heroes, dish→dishes, bench→benches. [注]&am…

ad从2003升级到2008总结

一、升级前要在2003域控运行adprep命令来扩展2003森林架构和域架构 &#xff08;adprep命令在2008 r2安装光盘的support\adprep目录。需要将其复制到2003域控中&#xff09; 源2003 server为64位&#xff1a;adprep.exe 源2003 server为32位&#xff1a;adprep32.exe 转载于:h…

php 只读变量,PHP:类中的静态Readonly属性

直接回答您的问题&#xff1a;不,您不能将常规属性标记为只读.如果你想设置基本类型(数组除外),那将永远不会改变,你应该使用常量const QWE 666;这对于对象和数组不起作用.我看到两个(让我们说)“解决方案”>使用Getterprivate $qwe;public function getQwe() { return $th…

在Xcode6中搭建Python开发环境

http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑&#xff0c;刚入门Python的同学&#xff0c;一定很好奇是不是可以使用Xcode这款IDE工具集成学习Python语言&#xff0c;答案是Yes&#xff01;网络中有很多使用Xcode5搭建的帖子&#xff0c;现…

c++类模板及参数类型的运行时判断

/*C类模板及参数类型的运行时判断(typeid) */#include <stdio.h> #include <typeinfo> #include <vector> using namespace std;template<class T> class Exercise {public:typedef T Type;typedef vector < Type > VT;Exercise(int n);void Dis…

php redis 删除元素,redisTemplate.delete()不能删除元素

最近在学习redis&#xff0c;使用spring-data-redis的RedisTemplate.delete()方法删除时&#xff0c;添加是成功的&#xff0c;但是不能删除。代码如下public abstract class AbstractBaseRedisDao {Autowiredprotected RedisTemplate redisTemplate;// public void setRedisTe…

设计模式心得:三——命令模式

继续设计模式心得体验——命令模式。 命令模式&#xff1a; 将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 一般在命令模式中有三个元素&#xff0c;invoker、command、…