在Python中如果要訪問和操作Oracle數據庫,可使用cx_Oracle來實現。本文主要對cx_Oracle基本功能進行測試。
準備工作
安裝好Python,本例使用Python 2.7版本。
安裝本地Oracle客戶端,配置數據庫連接,本例使用Oracle 11g。
下載和安裝cx_Oracle
下載地址:http://sourceforge.net/projects/cx-oracle/
下載時注意Oracle數據庫版本及本地Python版本。下載後,直接安裝即可。
簡單查詢操作
import cx_Oracle #創建數據庫連接 conn = cx_Oracle.connect('dbuser/password@servername/sid') #獲取操作遊標 cursor = conn.cursor() #執行查詢SQL,返回值1 cursor.execute("""select 1 from dual""") #獲取返回結果一條記錄 rs = cursor.fetchone() #執行完成,打印提示信息 print 'result = %s'%rs result = 1 #關閉連接,釋放資源 cursor.close() conn.close()
執行DDL建表語句
cursor.execute("""create table tmp_user(id number, name varchar2(20))""") print 'completed!'
執行DML插入記錄
#插入一條記錄 cursor.execute( """insert into tmp_user values(1,'admin')""" ) #採用綁定變量方式插入一條記錄 param = {'id':2, 'name':'system'} cursor.execute('insert into tmp_user values(:id, :name)',param) #一次插入多條數據,參數爲字典列表形式 param=[{'id':3,'name':'John'},{'id':4,'name':'Mary'},{'id':5,'name':'Steven'}] cursor.executemany('insert into tmp_user values(:id,:name)',param) #再一次插入多條數據,參數爲元組列表形式 param=[] for i in range(6,8): #[6,7] param.append((i,'user'+str(i))) cursor.executemany('insert into tmp_user values(:1,:2)',param) #提交事務 conn.commit
查詢返回多條記錄的情況
cursor.execute("""select * from tmp_user""") #獲取2條記錄 r2 = cursor.fetchmany(2) print r2[0], r2[1] #獲取剩餘所有記錄 rn = cursor.fetchall() for row in rn: print row #帶條件的查詢 cursor.prepare("""select * from tmp_user where id>=:id""") cursor.execute(None,{'id':7}) #None注意大小寫 for row in cursor: print row
執行調用存儲過程(見下篇)