您的位置:首页 > 博客中心 > 数据库 >

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。

时间:2022-03-10 17:11

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。 - 在水一方 - 博客频道 - CSDN.NET

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。

分类: 技术空间 2008-06-12 10:43 301人阅读 评论(0) 收藏 举报
pythonoracleserverwebapache数据库
 

各种在 Web 服务器和数据库之间充当中间层的服务器端技术使当今的开发人员获益匪浅,这些技术包括 JavaServer Pages (JSP)、Active server Pages (ASP)、PHP 以及 PL/SQL server Pages(如果您是一位 oracle 开发人员)。

我在 2003 年首次接触 Python 编程语言,并从那时起开始沉迷于这种语言的独特魅力及其简便的使用。它是一种高级语言,几乎类似于以纯英文编写,就好像编程人员对于伪代码的认识。Python 的动态本质使您能够编写最简明的代码来完成甚至最复杂的任务。

在这篇文章中,我将简要介绍一种创建完整的 Python server Pages/Oracle 数据库 10g 快速 Web 开发环境的简单方法。本文假设您没有在 windows 或 Linux 系统上安装任何组件。(如果已安装,则可以相应地跳过某些步骤。)所有提到的组件都可免费下载,并且不需要任何许可费用。

Python 和 Python server Pages 的背景

Python 提供了强大的自我检测功能、可动态键入、完全面向对象,并具有可扩展性以及平台独立性(Windows、Linux、Solaris、Mac OS、Nokia / S60、Pocket PC 等等)。它使您能够获得高生产率并以结果为导向,重在解决问题而非应对语言固有特性。Python 的可读性很强,非常易于维护(通过对代码样式提出特定要求)。我有许多实际上可以执行复杂任务的 Python 单行程序(有时是双行程序,如果包含导入语句),它们远比“hello-world”那样的程序功能强大。

Python 最大的优势之一是其广泛的标准库,其中提供了可用于大多数编程任务的现成模块组(Python 编程人员称其为“带电池的策略”),包括文件 I/O、系统交互、联网、数据分析和操作、线程、监测、单元测试、自我检测、XML 处理等等。

您将会着迷于利用 Python 获得的开发速度 — 最终可以让计算机理解而不是误解您的意图。此外,利用内置的文档字符串 (docstring) — 即内嵌的帮助字符串,其他编程人员可以快速理解您的类或函数的精髓。(从源代码创建文档轻而易举。)正是由于这些原因,Google 和 NASA 使用了大量的 Python,而 microsoft 正在 .NET 平台上开发自己的 Python 版本,称为 IronPython。

Python server Pages (PSP) 之于 Python 正如 Java server Pages 之于 Java。较之以常规 CGI 处理的页面,利用 PSP 呈现的页面的执行效果要好 50 倍。Mod_python 包含了许多专门的模块,使得 Web 开发更简单。

解决方案组件

完整的 Web 开发环境至少必须包含三个基本组件:Web 服务器、数据库以及服务器端后端技术。此外还有一些功能要求,例如可靠性、可伸缩性以及互操作性。为了满足上述条件,我选择使用 Apache HTTP server 2.0、Oracle 数据库 10g 快捷版 (XE) 以及 Python 2.4(带有 mod_python 和 cx_Oracle 模块)。(请阅读并找出选择这三项的原因。)

不但 Linux 用户仍然无需键入太多内容,就是 windows 用户也必定享受所有这些组件的简单安装方式(只需单击 Next)。我已经简化了安装过程,以利用可用的二进制文件。

oracle 数据库 10g 快捷版

2006 年 2 月,Oracle 推出了 oracle 数据库快捷版的生产版。它是 oracle 数据库 10g 第 2 版的小型入门级版本,其开发、部署以及分发完全免费。

oracle 数据库快捷版适用于 windows 和 Linux 操作系统,是 PHP、Java 或 .NET 开发人员的首选。此外,利用大量可用的第三方模块和驱动程序,可以通过各种不同的编程语言(包括 Python)访问该数据库。

oracle 数据库快捷版具有西欧与通用两种版本。前者只支持 LATIN1 字符,而后者的默认字符集为 AL32UTF8。通用版本还包括翻译为巴西葡萄牙文、中文(简体和繁体)、英文、法文、德文、意大利文、日文、韩文以及西班牙文的管理界面。没有人愿意仅限于使用 LATIN1,因此我建议安装并使用通用版。

安装并运行 oracle 数据库快捷版

下载适用于 windows 的 OracleXEUniv.exe 或适用于基于 RPM 的 Linux 版本的 oracle-xe-univ-10.2.0.1-1.0.i386.rpm。(Oracle 数据库快捷版也适用于 Debian,但这超出了本文档的讨论范围。)

在 windows 平台上:

  1. 使用具有管理员权限的帐户登录 windows。
  2. 如果系统之前已设置了 ORACLE_HOME 变量,请将其移除。
  3. 双击第一步中下载的安装可执行文件。 gxlsystem.com,布布扣

    这对于我们深入了解呈现引擎非常有用。它还阐释了 mod_python 引擎背后的逻辑:在执行之前,PSP 页面会呈现为纯 Python 代码。

    开始开发基本的 PSP 应用程序之前,最后需要了解的是会话和表单处理。请考虑以下这个基本的登录示例 (basic_login.psp)。页面上提供的口令应是反序 UID:

    <%
    if ‘uid‘ in form and ‘passwd‘ in form and form[‘passwd‘]==‘‘.join(reversed(form[‘uid‘])):
    	session[‘uid‘] = form[‘uid‘]
    %>
    user <%=session[‘uid‘]%> logged in
    <%
    else:
    %>
    <form action="basic_login.psp">
    UID<br<input type="text" name="uid"/><br/><br/>
    Password<br/><input type="password" name="passwd"/><br/><br/>
    <input type="submit" value="Login"/>
    
    </form>
    <%
    #
    %>
    

    PSP 的特色是具有两个重要的全局变量:formsession。这些是标准的 Python 字典。这将给予您最大的灵活度,但在分配变量时要小心,因为它们没有覆写保护。通过设置 session 字典变量的键值,即可设置会话变量:

    session[‘variable‘] = value

    注意,Python 没有限制您使用字符串或整数作为字典键 — 任何可哈希的值都适用。例如,可在会话池中存储一个文件对象,以便在会话期间随时引用它。Mod_python 平等对待 GETPOST 请求,将它们存储在 form 字典中,易于查看用户是否已设置了该值。Python 字典有一些非常有用的内置方法,此时最便于使用的是:

    • D.keys() — 返回字典 D 键列表
    • D.has_key(k) — 如果字典 D 具有键 k,则返回 True,否则返回 False
    • D.get(k[, d]) — 如果 D 具有键 k,则返回值 D[k],否则返回 dd 默认为 None);这在表单处理中非常有用,例如 <%=form.get(‘is_sure‘, ‘not sure‘)%>

     

    cx_Oracle

    利用 cx_Oracle Python 模块,可以轻松实现对 oracle 数据库的访问。该模块由 Anthony Tuininga (Computronix) 根据 DB API 2.0 规范开发,这意味着,您使用同样的方法和属性组就可连接到 MySQL 或 PostgreSQL。

    Cx_Oracle 具有 DB API 2.0 规范 (PEP 249) 的所有方法和属性,除了 nextset() 游标方法和 Binary() 构造函数。然而,请注意,cx_Oracle 向标准 API 引入了许多自己的扩展,从而极大地加强了与 oracle 数据库的合作。这些扩展在 cx_Oracle 文档中都有详细描述,但一般而言,如果您过去使用的是 DB API 2.0,那么这些扩展对您来说应该毫不陌生。

     

    安装 cx_Oracle

    在 windows 平台上:
    1. 下载 cx_Oracle-4.1.2-win32-10g-py24.exe,并双击下载的安装程序。
    2. 单击 Next 继续。
    3. 该安装程序将试图找到默认的 Python 2.4 解释器。要接受该选择,单击 Next
    4. 要开始安装过程,按 Next 按钮。
    5. 单击 Finish 完成安装。

    在 Linux 平台上:

    1. 下载 cx_Oracle-4.1.2-10g-py24-1.i386.rpm,并将其置于系统的 /tmp 目录下。
    2. /tmp 目录下运行:
      $ rpm -ivh cx_Oracle-4.1.2-10g-py24-1.i386.rpm

    使用 cx_Oracle

    正如前面所述,cx_Oracle 基于 DB API 2.0 规范,因而用户使用起来非常简单。请参考以下示例,以熟悉连接至数据库并发出查询的基本步骤。在 APACHE_HOME/htdocs 下,创建文件 ora.psp 以查看 cx_Oracle 模块是否运行正常。(使用适用于配置的值替换用户名和口令。):

    <%
    import cx_Oracle
    db = cx_Oracle.connect(‘username‘, ‘password‘, ‘127.0.0.1/XE‘)
    c = db.cursor()
    
    c.execute(‘select * from dual‘)
    req.write(c.fetchall()[0][0])
    
    db.close()
    %>
    

    当您打开 http://127.0.0.1/ora.psp 后,应当将浏览器中的 X 字符视为系统 DUAL 表中的唯一值。

    后续步骤

    刚才您为 PSP 和 oracle 数据库 10g 设置了一个完整的工作环境,还了解了 Python Web 开发的基本知识。现在,您可以按照这个思路利用 PSP 编写复杂的应用程序,或切换至 mod_python 的 Publisher Handler,以提供更好的 MVC(模型-视图-控制器)策略。

    目前有数个可用于 Python 的应用程序框架。尽管我建议您可以试一试,但这些框架要在企业级环境中使用还需进一步改进。Apache 以及 mod_python 本身对于处理大多数开发任务已经足够强大了。


    Przemyslaw Piotrowski 是一名信息技术专家,专门研究新兴技术和动态、灵活的开发环境。他拥有很强的 IT 专业技术背景(包括管理、开发和设计),并发现了许多软件互操作方法。他的个人网络日志是 prpi.blogspot.com。

为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。,布布扣,bubuko.com

热门排行

今日推荐

热门手游