本文实例讲述了Python3.6连接Oracle数据库的方法。分享给大家供大家参考,具体如下:
下载cx_Oracle模块模块:
https://pypi.python.org/pypi/cx_Oracle/5.2.1#downloads
这里下载的是源码进行安装
1
2
3
4
5
6
7
|
[root@oracle oracle] # tar xf cx_Oracle-5.2.1.tar.gz
[root@oracle oracle] # cd cx_Oracle-5.2.1
[root@oracle cx_Oracle - 5.2 . 1 ] # python setup.py build
Traceback (most recent call last):
File "setup.py" , line 170 , in <module>
raise DistutilsSetupError( "cannot locate an Oracle software " \
distutils.errors.DistutilsSetupError: cannot locate an Oracle software installation
|
报错解决办法:在root用户的.bash_profile文件中添加oracle_home的环境变量
1
2
3
4
5
|
export ORACLE_HOME = / u01 / app / product / 11.2 . 0 / dbhome_1
PATH = ${ORACLE_HOME} / bin :$PATH:$HOME / bin
[root@oracle cx_Oracle - 5.2 . 1 ] # source /root/.bash_profile
[root@oracle cx_Oracle - 5.2 . 1 ] # echo ${ORACLE_HOME}
/ u01 / app / product / 11.2 . 0 / dbhome_1
|
然后继续build:
1
2
3
|
[root@oracle cx_Oracle - 5.2 . 1 ] # python setup.py build
running build
running build_ext
|
后面输出信息省略
1
2
3
|
[root@oracle cx_Oracle - 5.2 . 1 ] # python setup.py install
running install
running bdist_egg
|
后面输出信息省略
按照完成之后,进行验证模块:
1
2
3
4
|
>>> import cx_Oracle
Traceback (most recent call last):
File "<stdin>" , line 1 , in <module>
ImportError: libclntsh.so. 11.1 : cannot open shared object file : No such file or directory
|
解决办法:在root用户的.bash_profile文件中添加LD_LIBRARY_PATH的环境变量
1
2
|
LD_LIBRARY_PATH = $ORACLE_HOME / lib: / usr / lib: / usr / local / lib
export LD_LIBRARY_PATH
|
1
2
|
[root@oracle cx_Oracle - 5.2 . 1 ] # source /root/.bash_profile
[root@oracle cx_Oracle - 5.2 . 1 ] # python
|
1
2
3
4
|
Python 3.6 . 1 (default, Jul 13 2017 , 14 : 31 : 18 )
[GCC 4.4 . 7 20120313 (Red Hat 4.4 . 7 - 17 )] on linux
Type "help" , "copyright" , "credits" or "license" for more information.
>>> import cx_Oracle
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#!/usr/bin/python
#coding=utf8
# import module
import cx_Oracle as oracle
# connect oracle database
db = oracle.connect( 'scott/redhat@192.168.223.138:1521/oracle.test' )
# create cursor
cursor = db.cursor()
# execute sql
cursor.execute( 'select sysdate from dual' )
# fetch data
data = cursor.fetchone()
print ( 'Database time:%s' % data)
# close cursor and oracle
cursor.close()
db.close()
|
1
2
|
[oracle@oracle scripts]$ python connectoracle.py
Database time: 2017 - 08 - 04 10 : 20 : 39
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/usr/bin/python
#coding=utf8
import cx_Oracle as oracle
def oraclesql(cursor):
fp = open (r '/home/oracle/scripts/tablespace.sql' )
fp_sql = fp.read()
cursor.execute(fp_sql)
data = cursor.fetchall()
return data
if __name__ = = '__main__' :
ipaddr = "192.168.223.138"
username = "system"
password = "redhat"
oracle_port = "1521"
oracle_service = "oracle.test"
try :
db = oracle.connect(username + "/" + password + "@" + ipaddr + ":" + oracle_port + "/" + oracle_service)
# 将异常捕捉,然后e就是抛异常的具体内容
except Exception as e:
print (e)
else :
cursor = db.cursor()
data = oraclesql(cursor)
for i in data:
print (i)
cursor.close()
db.close()
|
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://www.cnblogs.com/jsonhc/p/7283620.html