python连接Oracle数据库代码

import cx_Oracle as oracle

# db = oracle.connect('用户名/密码@IP:端口号/SERVICE_NAME')
db = oracle.connect('admin/password@IP:1521/DataBase')
cursor = db.cursor()
# execute sql
cursor.execute("'SELECT * FROM dual")
data = cursor.fetchall()

print('Database time:%s' % data)
# close cursor and oracle
cursor.close()
db.close()

若在linux环境下报以下错:DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory"

原因是 oracle客户端是32位的,

解决方法:下载64位的oracle客户端

1、官网下载对应版本的rpm包

http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm 

oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm   

oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

2、上传到linux解压:

rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

rpm -ivh oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm

rpm -ivh oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86_64.rpm

3、解压后,

 cd /usr/lib/oracle/12.2/client64

创建目录:mkdir -p ./network/admin

在该目录下创建文件: vi ./network/admin/tnsnames.ora

文件内容如下 :

DB =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))

    )  # 需要修改为你自己的host,port,service_name

    (CONNECT_DATA =

      (SERVICE_NAME = DB)

    )

  )

4、

vi ~/.bashrc

添加以下:

export  ORACLE_HOME=/usr/lib/oracle/12.2/client64

export ORACLE_BASE=/usr/lib/oracle/12.2

export  TNS_ADMIN=$ORACLE_HOME/network/admin

export  LD_LIBRARY_PATH=$ORACLE_HOME/lib

export  PATH=$ORACLE_HOME/bin:$PATH

export  NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

5、source ~/.bashrc

6、重启python, 连接oracle,成功。

 

python连接hive : https://blog.csdn.net/kerry_55/article/details/105789298

python连接oracle:  https://blog.csdn.net/kerry_55/article/details/93390592

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值