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 '''
View Code

相关文章: