本文实例讲述了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