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包
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