python——連接Oracle數據庫


前言

Python自帶的模塊中有很多操縱文件的。我們可以把文件的數據讀出來,經過處理還可以將數據寫入文件中。但是對於數據的管理和分析來說,數據庫還是專業一些。如果Python能和數據庫結合在一起,那么就能結合兩種的優勢,提高效率。

工作中使用的是Oracle數據庫,Python有一個模塊cx_Oracle可以與Oracle相連。要使用cx_Oracle,就要先下載。

1. 下載cx_Oracle

Python一個官方網站PyPI,上面有豐富的模塊。cx_Oracle就可以在PyPI中下載。打開PyPI的網址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到該模塊,其下載地址為http://cx-oracle.sourceforge.net/。當然也可以通過其它的途徑下載。

下載之后就可以使用了。

2. 使用流程

簡單的使用流程如下:

1.引用模塊cx_Oracle
2.連接數據庫
3.獲取cursor
4.使用cursor進行各種操作
5.關閉cursor
6.關閉連接

下面是一個簡單的例子:

import cx_Oracle                                          #引用模塊cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')    #連接數據庫
c=conn.cursor()                                           #獲取cursor
x=c.execute('select sysdate from dual')                   #使用cursor進行各種操作
x.fetchone()
c.close()                                                 #關閉cursor
conn.close()                                              #關閉連接

3. 幾種用法

Python對數據庫的操作主要有2方面:一個是寫數據,一個是讀數據。這2個方面的實現可以通過SQL語句實現,也可以通過存儲過程實現。所以cx_Oracle的主要用法有:

1. 執行SQL語句

2. 調用存儲過程和函數。

4. 執行SQL語句

執行SQL語句很簡單,從上面的例子就可以看出。使用cursor.execute即可執行。使用fetchone或fetchall即可將執行結果讀出來。

下面一個例子是Insert語句,使用的變量綁定。

import cx_Oracle                                          
conn=cx_Oracle.connect('load/123456@loaclhost/ora11g')  
c=conn.cursor()                                         
x=c.execute('insert into demo(v) values(:1)',['nice'])
conn.commit();                  
c.close()                                                 
conn.close() 

變量綁定和Oracle的動態SQL一樣,都是冒號將占位符,即代碼中的:1,對變量的復制就是傳入一個List,即代碼中的['nice']。有多少個變量,list中就應該對應多少個值,數目要一致,否則會報錯。

執行之后,可以使用連接的一個方法connect.commit(),將事務提交。

5. 調用存儲過程和方法

直接上代碼:

--存儲過程代碼:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
    V2 := V1;
END;
#Python代碼:
import cx_Oracle                                          
conn=cx_Oracle.connect('load/123456@localhost/ora11g')  
c=conn.cursor()   
str1='nice'
str2='    '#需要有值,即len(str2)>=len(str1)                                        
x=c.callproc('p_demo',[str1,str2])
print(str2)                   
c.close()                                                 
conn.close()  

調用存儲過程使用的是cursor.callproc方法。上面的存儲過程中,一個變量的值是OUT型的,在Python中,對OUT型的變量賦值,主要該變量的長度不能小於存儲過程中的。

--函數代碼:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
    RETURN V1;
END;
#Python代碼:
import cx_Oracle                                          
conn=cx_Oracle.connect('load/123456@localhost/ora11g')  
c=conn.cursor()   
str1='nice'                                     
str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])
print(str2)                   
c.close()                                                 
conn.close()

調用函數使用的方法是cursor.callfunc。這個與調用存儲過程不同之處在於,它需要指定傳輸參數的類型。

結束

通過cx_Oracle,可以是Python與Oracle數據庫相互溝通,這樣兩者就可以長處互補。

比如,可以將Python當成一個數據收集的工具,可以從Web,從文件中獲取數據,然后將這些數據保存到Oracle數據庫中,在Oracle數據庫上進行數據的進一步分析。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM