连接oracle数据库

时间:2021-10-03 06:58:50

一、连接oracle数据库

一、windows环境

  oracle windows客户端下载地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html

  1、首先需要安装好oracle数据库,本机适用plsql连接数据库正常,记录下数据库名称

  oracle连接工具下载地址:https://www.allroundautomations.com/bodyplsqldevreg.html

  连接oracle数据库

  2、安装cx_oracle模块

pip install cx_Oracle

  3、python中引入模块

import cx_Oracle as cx

  4、测试

conn = cx.connect('sys/password@localhost/orcl')
cursor = conn.cursor ()
cursor.execute ("select * from dual")
row = cursor.fetchone ()
print (row)
cursor.close ()
conn.close ()

二、Linux环境

  1、涉及软件包

    1、cx_Oracle

  下载地址:http://sourceforge.net/projects/cx-oracle/files/?source=navbar

  我下载的是的cx_Oracle-5.1.2.tar.gz

    2、Oracle_client

  使用cx_Oracle必须要安装Oracle_client端,或者你已经安装了Oracle数据库。

  下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

  以连接Oracle11为例需要下载以下rpm包:

  oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

  oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm

  oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

  oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

  oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm

  oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm

  软件包都下载完后,我们开始来安装。

  2、源码安装

    1、Oracle_client端安装:
  # rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm  oracle-instantclient11.2-tools-11.2.0.4.0-1.x86_64.rpm
  # echo /usr/lib/oracle/11.2/client64/lib/ >> /etc/ld.so.conf
  # ldconfig

  如果不进行ldconfig配置,在运行cx_Oracle时会报以下错误:

ibclntsh.so.11.1: cannot open shared object file: No such file or directory
    2、设置相应用户的环境变量:

  在这里需要说明下,你使用哪个帐户装cx_Oracle就需要配置哪个帐户的环境变量,以下已root帐户为例;

  如果不配置环境变量、或环境变量配置不正确,在安装cx_Oracle时,会报各种错误,比如说:

oci.h: No such file or directory

#vi ~/.bashrc

export TNS_ADMIN="/usr/lib/oracle"
export ORACLE_HOME="/usr/lib/oracle/11.2/client64"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib"
export PATH="${PATH}:${ORACLE_HOME}" #source ~/.bashrc
    3、源码安装
#tar -zxvf cx_Oracle-5.1.2.tar.gz
#cd cx_Oracle-5.1.2
#python setup.py install
    4、安装成功后相应检查
[root@HAProxy01 Scripts]# python

Python 3.3.0 (default, Sep 14 2017, 14:53:20)

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

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

>>> import cx_Oracle

>>> 

  3、脚本实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*- import cx_Oracle as db
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8' def queryOracle(sql):
username = "US_ORDER" #用户名
passwd = "******" #用户密码
host = "192.168.1.203" #服务器IP
port = "" #oracle端口
sid = "ORCL" #oracle的
dsn = db.makedsn(host, port, sid)
con = db.connect(username, passwd, dsn)
cur = con.cursor()
cur.execute(sql)
result = cur.fetchall()
cur.close()
con.close()
return result if __name__=="__main__":
sql = "select sysdate from dual" #需要执行的SQL
result = queryOracle(sql)
print(result)

  执行结果:

[root@HAProxy01 Scripts]# ./check_oracle_tables.py

[(datetime.datetime(2017, 9, 15, 12, 1, 51),)]