python做数据分析需要oracle_精通 Oracle+Python,第 1 部分:查询最佳应践

部分:查询最佳应践

作者:

Przemyslaw Piotrowski

首先,熟悉

Oracle­Python

连接性的基本概念

2007

9

月发布

参见系列目录

Python

做事方式的核心原则中,有一个规定是要求具有到

API

的高级接口。数据库

API

(在此例中为

Oracle API

)就是一个例子。

使用

Computronix

cx_Oracle Python

模块,您可以在维持与

Python

数据库

API

规范

v2.0

的兼容性的同时,控制

Oracle

的查询模

型。

对于所有遵循该规范的客户端库而言,使用

DB API 2.0

查询数据库的模型都是一致的。在此基础上,

cx_Oracle

的主要开发人员

Anthony T

uininga

添加了一组丰富的属性和方法,以向开发人员揭示

Oracle

独有的特性。仅用标准的方法而忘掉

额外的

方法是绝对

可能的,但在本文中您不会这么做。通用数据库包装这一概念可能在某些情况下起作用,但与此同时,您会失去

RDBMS

提供的所有

优化。

DB API 2.0

cx_Oracle

介绍

Python

数据库

API

规范

v2.0

是集体努力的成果,用于统一不同数据库系统的访问模型。拥有一组相对较少的方法和属性,在更换数

据库供应商时就易于学习并保持一致。它不以任何方式将数据库对象映射到

Python

结构中。用户仍然需要手工编写

SQL

。在更换到

另一数据库后,此

SQL

可能需要重新编写。尽管如此,它还是出色妥善地解决了

Python

数据库的连接性问题。

该规范定义了

API

的各个部分,如模块接口、连接对象、游标对象、类型对象和构造器、

DB API

的可选扩展以及可选的错误处理机

制。

数据库和

Python

语言之间的网关是连接对象。它包含制作数据库驱动的应用程序所需的全部组件,不仅符合

DB API 2.0

,而且是规

范方法和属性的一个超集。在多线程的程序中,模块和连接可以在不同线程间共享,但是不支持游标共享。这一限制通常是可接受

的,因为共享游标可能带来死锁风险。

Python

大量使用了异常模型,

DB API

定义了若干标准异常,它们在调试应用程序中的问题时会非常有用。下面是一些标准异常,同

时提供了原因类型的简要说明:

Warning

数据在执行插入操作时被截断,等等

Error

这里提到的除

Warning

外的所有异常的基类。

InterfaceError

数据库接口而非数据库本身故障(本例为

cx_Oracle

问题)

DatabaseError

严格意义上的数据库问题

DataError

包含如下结果数据的问题除数为

0

,值超出范围等

OperationalError

与编程人员无关的数据库错误:连接丢失、内存分配错误、事务处理错误等

IntegrityError

数据库的关系完整性受到了影响,例如,外键约束失败

InternalError

数据库遇到内部错误,例如,游标无效、事务不同步

ProgrammingError

未找到表、

SQL

语句中的语法错误、指定参数的数量错误等

NotSupportedError

调用的

API

部件并不存在

连接过程首先从连接对象开始,这是创建游标对象的基础。除游标操作外,连接对象还使用

commit()

rollback()

方法对事务进行管

理。执行

SQL

查询、发出

DML/DCL

语句和获取结果这些过程均受游标控制。

在游标和连接类的实现中,

cx_Oracle

对标准的

DB API 2.0

规范进行了最大程度的扩展。如果需要,所有这些扩展都将在文本中清楚

地标记。

入门

在使用查询和游标之前,首先需要建立数据库连接。提供凭证和数据源名称的方法有多种,其结果都是相似的。在从下面的

Python

交互式会话提取的内容中,连接对象

db

db1

db2

都是等同的。

makedsn()

函数根据给定的参数值创建一个

TNS

条目。此处将它

赋值给变量

dsn_tns

。如果环境设置得当,您可以使用更短的形式

cx_Oracle.connect('hr/hrpwd')

,从而省略用于

db

db1

的简单

连接字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值