当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle认证考试辅导:使用Oracle数据库实现Python数据持久
发布时间:2010/3/24 20:26:53 来源:城市学习网 编辑:admin

  使用Oracle数据库实现Python数据持久
  尽管Python 很快在开发人员之中普及,但长久以来 Oracle 数据库一直是最出色的企业级数据库。采用有效的方式将这两者结合在一起是比较令人感兴趣的主题,但这实际上是真正的挑战,因为二者都要付出很多。
  尽管受到警告,但本文并不会对最杰出的 Python 和 Oracle 数据库特性进行概述,而是提供一系列独立的示例。本文借助一个示例让您了解如何采用互补的方法尝试将这两种技术结合使用。尤其是,本文将指导您利用 PL/SQL 存储过程并使其在您的系统中正常工作:
  Apache HTTP Server 2.x
  Oracle 数据库 10g 快捷版
  Python 2.5 或更高版本
  mod_python 模块
  cx_Oracle 模块
  有关如何安装上述组件的详细说明,可以参考另一篇 OTN 文章“为 Python Server Pages 和 Oracle 构建快速 Web 开发环境”(作者:Przemyslaw Piotrowski)。
  设计基础数据库
  一般来说,最好从设计基础数据库开始。假设您创建了一个用户模式并授予其创建和操作模式对象所需的所有权限,那么第一步就是创建基础表。在这种特殊情况下,您将需要一个唯一的名为 otn_articles_rss 的表,创建该表的方式如下:
  CREATE TABLE otn_articles_rss (guid VARCHAR2(100) PRIMARY KEY,title VARCHAR2(200),pubDate VARCHAR2(32),link VARCHAR2(200),clicks INTEGER);
  下一步是设计一个将在 Python 代码中调用的名为 count_clicks 的存储过程,它更新 otn_articles_rss 表中的数据。继续 count_clicks 过程之前,您必须先回答以下问题:当 count_clicks 尝试更新尚未插入到 otn_articles_rss 表中的文章记录的 clicks 字段时,会发生什么情况呢?假设一个新项目刚刚添加到 RSS 页面,然后指向该项目的链接出现在您的站点上。当有人单击该链接时,系统将从负责处理指向 OTN 文章的链接上执行的单击次数的 Python 代码中调用 count_clicks PL/SQL 过程。显然,处理第一次单击时,在 count_clicks 过程中发出的 UPDATE 语句将失败,因为现在还没有要更新的行。
  要适应此类情况,您可以在 count_clicks 过程中实现一个 IF 块,如果由于 UPDATE 找不到指定的记录而将 SQL%NOTFOUND 属性设置为 TRUE 时,该块会发挥作用。在该 IF 块中,只要指定了 guid 和单击次数,您就可以先将一个新行插入到 otn_articles_rss 表中。之后,您应该提交这些更改,以便这些更改立即可用于其他用户会话,这些会话可能也需要更新新插入的文章记录的 clicks 字段。最后,您应该更新该记录,设置其 title、pubDate 和 link 字段。该逻辑可以作为一个单独的过程(比如 add_article_details)来实现,该过程的创建方式如下:
  CREATE OR REPLACE PROCEDURE add_article_details (gid VARCHAR2, clks NUMBER) ASitem XMLType;heading VARCHAR2(200);published VARCHAR2(32);url VARCHAR2(200);BEGINSELECT extract(httpuritype.createuri(‘http://feeds.delicious.com/v2/rss/OracleTechnologyNetwork/otntecharticle‘).getXML(),‘//item   采用Pythonic 方法 在前面部分中编写的代码结构与采用 Pythonic 方法实现的代码看起来不太相同。尤其是,您按照一定的顺序实现了一组将从在 HTML 中嵌入的代码调用的函数,将一个函数返回的结果用作另一个函数的参数。实际上,这是采用任何其他脚本语言(比如说 PHP)结构化您的代码的方式。 尽管 Python 的真正功能在于它能够隐藏令人厌烦的实现详细信息,从而提供一个简单、优美而有效的编码解决方案。字典、列表和列表内涵是常用的 Python 内置类型,在处理结构化数据时可以显著简化您的代码。返回在前面部分中讨论的 oraclepersist.py 脚本,对其进行升级,以便最大程度地利用这些杰出的 Python 语言工具。为了避免混淆,您可以将修订保存在一个单独的名为 oraclepersist_list.py 的文件中:import cx_Oracleimport urllib2import xml.dom.minidomurl = ‘http://feeds.delicious.com/v2/rss/OracleTechnologyNetwork

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved