您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在Python中使用cx_Oracle模塊對(duì)Oracle數(shù)據(jù)庫(kù)進(jìn)行操作,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
1. 下載cx_Oracle
Python一個(gè)官方網(wǎng)站PyPI,上面有豐富的模塊。cx_Oracle就可以在PyPI中下載。打開(kāi)PyPI的網(wǎng)址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到該模塊,其下載地址為http://cx-oracle.sourceforge.net/。當(dāng)然也可以通過(guò)其它的途徑下載。
下載之后就可以使用了。
2. 使用流程
簡(jiǎn)單的使用流程如下:
①.引用模塊cx_Oracle
②.連接數(shù)據(jù)庫(kù)
③.獲取cursor
④.使用cursor進(jìn)行各種操作
⑤.關(guān)閉cursor
⑥.關(guān)閉連接
下面是一個(gè)簡(jiǎn)單的例子:
cx_Oracle.connect("用戶(hù)名 / 密碼@ Oracle服務(wù)器IP / Oracle的SERVICE_NAME")
獲得 Oracle的SERVICE_NAME:
su - oracle #切換至oracle用戶(hù)
env | grep ORACLE #查詢(xún)ORACLE的環(huán)境變量
ORACLE_SID=benguo # benguo就是SERVICE_NAME
import cx_Oracle #引用模塊cx_Oracle conn=cx_Oracle.connect('load/123456@localhost/ora11g') #連接數(shù)據(jù)庫(kù) c=conn.cursor() #獲取cursor x=c.execute('select sysdate from dual') #使用cursor進(jìn)行各種操作 x.fetchone() c.close() #關(guān)閉cursor conn.close() #關(guān)閉連接
例子:
#coding:utf-8 import cx_Oracle def main(): conn = cx_Oracle.connect("zebra/zebra@192.168.0.113/benguo") cur =conn.cursor() r= cur.execute("select * from userinfo") print print r.fetchone() if __name__ == '__main__': main()
3. 幾種用法
Python對(duì)數(shù)據(jù)庫(kù)的操作主要有2方面:一個(gè)是寫(xiě)數(shù)據(jù),一個(gè)是讀數(shù)據(jù)。這2個(gè)方面的實(shí)現(xiàn)可以通過(guò)SQL語(yǔ)句實(shí)現(xiàn),也可以通過(guò)存儲(chǔ)過(guò)程實(shí)現(xiàn)。所以cx_Oracle的主要用法有:
①. 執(zhí)行SQL語(yǔ)句
②. 調(diào)用存儲(chǔ)過(guò)程和函數(shù)。
4. 執(zhí)行SQL語(yǔ)句
執(zhí)行SQL語(yǔ)句很簡(jiǎn)單,從上面的例子就可以看出。使用cursor.execute
即可執(zhí)行。使用fetchone或fetchall即可將執(zhí)行結(jié)果讀出來(lái)。
下面一個(gè)例子是Insert語(yǔ)句,使用的變量綁定。
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的動(dòng)態(tài)SQL一樣,都是冒號(hào)將占位符,即代碼中的:1,對(duì)變量的復(fù)制就是傳入一個(gè)List,即代碼中的['nice']。有多少個(gè)變量,list中就應(yīng)該對(duì)應(yīng)多少個(gè)值,數(shù)目要一致,否則會(huì)報(bào)錯(cuò)。
執(zhí)行之后,可以使用連接的一個(gè)方法connect.commit()
,將事務(wù)提交。
5. 調(diào)用存儲(chǔ)過(guò)程和方法
直接上代碼:
--存儲(chǔ)過(guò)程代碼: 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()
調(diào)用存儲(chǔ)過(guò)程使用的是cursor.callproc
方法。上面的存儲(chǔ)過(guò)程中,一個(gè)變量的值是OUT型的,在Python中,對(duì)OUT型的變量賦值,主要該變量的長(zhǎng)度不能小于存儲(chǔ)過(guò)程中的。
--函數(shù)代碼: 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()
調(diào)用函數(shù)使用的方法是cursor.callfunc
。這個(gè)與調(diào)用存儲(chǔ)過(guò)程不同之處在于,它需要指定傳輸參數(shù)的類(lèi)型。
上述內(nèi)容就是怎么在Python中使用cx_Oracle模塊對(duì)Oracle數(shù)據(jù)庫(kù)進(jìn)行操作,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。