python操作oracle数据库-查询

本文介绍了Python使用cx_Oracle模块操作Oracle数据库进行查询的方法,包括数据类型、绑定变量模式和一次多行操作。讲解了如何建立连接、创建游标、执行SQL以及处理查询结果,强调了绑定变量在提升性能和防止SQL注入方面的重要性。
摘要由CSDN通过智能技术生成

python操作oracle数据库-查询
参照文档
http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python-1391323-zhs.html
http://cx-oracle.readthedocs.io/en/latest/module.html

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 — 数据库的关系完整性受到了影响,例如,外键约束失败
  • ProgrammingError — 未找到表、SQL 语句中的语法错误、指定参数的数量错误等
  • NotSupportedError — 调用的 API 部件并不存在

连接过程首先从连接对象开始,这是创建游标对象的基础。除游标操作外,连接对象还使用 commit() 和 rollback() 方法对事务进行管理。执行 SQL 查询、发出 DML/DCL 语句和获取结果这些过程均受游标控制。

第一步:导入cx_Oracle ,建立连接

>>> import cx_Oracle
>>> db = cx_Oracle.connect('hr', 'hrpwd', 'localhost:1521/XE')
>>> db1 = cx_Oracle.connect('hr/hrpwd@localhost:1521/XE')
>>> dsn_tns = cx_Oracle.makedsn('localhost', 1521, 'XE')
>>> print dsn_tns
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SID=XE)))
>>> db2 = cx_Oracle.connect('hr', 'hrpwd', dsn_tns)
# 通过客户端连接oracle
connection = cx_Oracle.connect(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值