cx_Oracle 是一个Python的扩展模块,通过使用所有数据库访问的模块通用的数据库API来是实现Oracle数据库的查询和更新。
cx_Oracle的开发历时十多年,涵盖了大多数需要在Python中访问Oracle的客户的需求。2008年12月,一个新的主要版本解决了早期版本的众多限制,并增添了对Python3.0和Oracle新推进的一些特性的支持。
下面写一个是简单的转账例子,附上代码
配置工作(Oracle.settings.py)
1 # -*- coding: utf-8 -*- 2 3 import cx_Oracle 4 5 6 ##操作Oracle数据库 7 class Oracle: 8 #连接Oracle数据库 9 def oracle_Conn(self,oracle_user,oracle_password,oracle_ip,oracle_port,oracle_service_name): 10 print('正在连接Oracle数据库.......') 11 global conn 12 # 用户,密码,oracle数据库服务名称(或数据库系统标识符SID) 13 conn = cx_Oracle.connect(oracle_user, oracle_password, '%s:%s/%s'%(oracle_ip,oracle_port,oracle_service_name),encoding = 'UTF-8') 14 15 16 #传进sql查询语句 17 def oracle_DQL(self,DQL_sql,params=[],rownums=0,fetchmany=False,fetchall=False): 18 #建立游标 19 # 此代码确保一旦完成该块,就将游标关闭并且数据库已回收资源。此外,任何cursor在块外使用变量的尝试都将失败 20 with conn.cursor(scrollable=True) as cur: 21 cur.execute(DQL_sql,params) 22 if fetchall == True: 23 query_res = cur.fetchall() 24 elif fetchmany == True: 25 query_res = cur.fetchmany(rownums) 26 else: 27 if rownums != 0: 28 cur.scroll(rownums) 29 query_res = cur.fetchone() 30 return query_res 31 32 ##创建表,DDL语句,不用提交 33 def oracle_DDL(self,DDL_sql,bind_params=[]): 34 with conn.cursor() as cur: 35 res = cur.execute(DDL_sql,bind_params) 36 return 'suc' 37 38 #数据操纵语句,insert,update,delete等 39 def oracle_DML(self,DML_SQL,bind_params=[]): 40 with conn.cursor() as cur: 41 res = cur.execute(DML_SQL,bind_params) 42 conn.commit() 43 return 'suc' 44 45 def oracle_Conn_Close(self): 46 conn.close() 47 print('Oracle数据库连接已经关闭.......') 48 49 ''' 50 obj = Oracle() 51 obj.oracle_Conn('back','123','127.0.0.1','1521','orcl') 52 res = obj.oracle_DQL('select * from students') 53 print(res) 54 obj.oracle_Conn_Close() 55 ''' 56 57 ''' 58 注意:对于回收站的对象,只支持查询操作,其他DDL,DML操作均不支持。 59 DQL:数据查询语句,查询操作,默认隐式提交 60 DML:数据操纵语句 insert,update,delete (Manipulation) conn.commit() 61 DCL:数据控制语言 grant rollback 62 用户授权或者访问数据库的某种特权,并控制数据库事务发生的时间和效果 63 DDL:数据定义语言:create 创建数据库各种对象(隐式提交,不能rollback) 64 '''