本文實例講述了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 # 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