使用 Python 和 DB2 Express-C 开发应用程序

发表于:2007-05-24来源:作者:点击数: 标签:python开发Express-Cdb2使用
Python 是一种非常强大的、通用的、高级的、 面向对象 的、动态类型的编程语言,它很容易阅读和理解,用它编写程序也很有意思。为了让它更令人兴奋,我们希望能够将它连接到同样强大而且价格低廉的 IBM DB2 核心引擎版本。DB2 Express-C 是一种可以用于 开发
Python 是一种非常强大的、通用的、高级的、面向对象的、动态类型的编程语言,它很容易阅读和理解,用它编写程序也很有意思。为了让它更令人兴奋,我们希望能够将它连接到同样强大而且价格低廉的 IBM® DB2® 核心引擎版本。DB2 Express-C 是一种可以用于开发和部署的免费数据服务器,这使我们能够实现这个愿望。本文一步步地介绍使用 Python 连接并使用 DB2 Express-C 实例所需的所有获取、安装和配置步骤。

概述

下面是在本文中要执行的任务:

  • 获取并安装 Python
  • 获取并安装 DB2 Express-C
  • 创建示例数据库
  • 使用 DB2 Control Center 查看关于数据库的详细信息
  • 使用 DB2 Command Line Processor 查看一些表内容
  • 为示例数据库设置 Windows® ODBC Datasource
  • 获取并安装 Python mxODBC 包
  • 在 Python 脚本中使用 mxODBC 访问数据库

 





回页首


首先,安装 Python

Python 是一种容易阅读、使用和学习的编程语言。这种语言有许多吸引人的好处,其中最重要的是容易阅读。对于这种语言的初学者来说,最有意思的方面之一是空白(缩进)是有意义的。这意味着编译器/解释器对清单 1 中代码段的解释方式与人们的理解方式相同。


清单 1. 缩进是有意义的
            1| if ( a == b ) :
            2|   if ( c == d ) :
            3|     print 'both match'  # printed only when both comparisons are true
            4| else :
            5|   print 'a not equal b'
            

注意:行号只用于引用目的。

第 1 行上的 if 语句将比较变量 ab 的值。如果它们相等,则执行第 2 行上的语句。只有在变量 a 的值等于变量 b 变量 c 的值等于变量 d 的情况下,才会看到第 3 行生成的输出。另一个 print 语句(第 5 行)只在 a 的值不等于 b 时执行,无论 c 和 d 的值是什么。

如果您还不熟悉 Python 语言,那么该考虑学学了。

表 1:安装 Python

任务 说明 备注/结果
安装 Python for Windows 最容易的方法是使用 ActiveState 站点 获取 Python 并开始安装
  1. ActivePython 页面上选择 Free Download 链接。
  2. (可选)填写信息并单击 Next 按钮。
  3. 找到适当的下载映像(比如 “Windows/x86”)。
  4. 右击链接并保存安装可执行文件。
  5. 用最新的病毒检查程序进行扫描。
  6. 在 Windows Explorer 中,双击保存的可执行文件(例如,ActivePython-2.4.3.12-win32-x86.msi)开始安装。
将 Python 安装到适当的位置,比如 C:\Python24
检验 Python 安装 打开一个新的命令提示,并输入

python -V

应该会显示已经安装的程序的版本:

Python 2.4.3

如果犯了错误,忘了 -V 那么会看到 Python 解释器的命令提示,而不是只看到版本号:
C:\>python
                        ActivePython 2.4.3 Build 12 (ActiveState Software Inc.) based on
                        Python 2.4.3 (#69, Apr 11 2006, 15:32:42) [MSC v.1310 32 bit (Intel)] on win32
                        Type "help", "copyright", "credits" or "license" for more information.
                        >>>
                        

您无意间启动了 Python 解释器。可按 Ctrl-Z <Enter> 退出解释器。





回页首


接下来将安装 DB2 Express-C

DB2 Express-C 是 DB2 Universal Database Express Edition(DB2 Express)的一个版本,是一种可以用于开发和部署的免费数据服务器。由于在一个更小的包中提供了与 DB2 Express 相同的核心数据服务器特性、开发接口以及系统限制,DB2 Express-C 为开发和部署所有应用程序(包括 C/C++Java.NETPHP 等等)提供了坚实的基础。DB2 Express-C 可以用在 32 位或 64 位硬件上运行的 Linux® 和 Windows 上,系统最多有 2 个 CPU 和 4GB 的内存。

使用 DB2 Express-C 的许多原因是显而易见的。其中比较重要的是:

  • 价格

    它是免费的

  • 可伸缩性

    当需要额外的功能和特性时,可以快速轻松地升级到适合自己需要的 DB2 产品的付费版本。

  • 容易获得(执行这些步骤甚至比列出它们还要容易):
    1. 将浏览器指向 DB2 Express-C 下载站点。
    2. 保存 Message Digest 5(MD5)签名。
    3. 单击 Download 链接。
    4. 如果需要,可进行注册。
    5. 登录。
    6. 检查个人信息和设置。
    7. 查看并检查许可协议。
    8. 选择 I agree 复选框。
    9. 单击 I confirm 按钮。
    10. 选择适合自己需要的下载技术,并单击对应的 Download now 链接。
    11. 指定适当的目标位置。
    12. 使用保存的 Message Digest 签名(参见上面的第 2 步)检查接收到的映像的完整性。
    13. 使用可靠的反病毒程序检查接收到的文件中是否有病毒。
  • 容易设置(注意:需要重新启动系统才能完成产品的安装):
    1. 将存档文件展开成适当的安装目录结构。
    2. 使用 Windows Explorer 进入展开后的目录结构(比如 db2exc_NT_x86)并找到 setup.exe
    3. 双击 setup.exe 来执行它。
    4. 使用 “Installation Prerequisites” 选项检查自己的环境是否适合这个产品。
    5. 使用 “Release Notes” 选项显示关于产品的最新信息。
    6. 使用 “Install Product” 选项启动安装过程。
      • 单击 Next 按钮。会看到 “Preparing to Install” 进度指示屏,最终显示 “Welcome to DB2 Setup wizard” 屏幕。单击 Next
      • 查看许可协议条款,选择 accept... 单选按钮并单击 Next 按钮。
      • 选择适当的安装类型(Typical、Compact 或 Custom)并单击 Next 按钮(建议采用 “Typical”)。
      • 指定适当的安装目录(例如,“C:\IBM\SQLLIB”)。
      • 选择适当的管理帐号(例如,Local system account)并单击 Next
      • 保留 Configure DB2 instances 上的默认值并单击 Next
      • 查看 “Start copying files” 屏幕上的信息并单击 Install 开始安装。
      • 将显示一个进度条,表示安装的进度。
      • 当显示 “Setup is complete” 对话框窗口时,单击 Finish 按钮。
      • 这时会提示重新启动计算机来完成安装。
  • 容易使用:

    重新启动之后,应该会看到 “First Steps” 窗口:



    图 1. First steps
    First steps

    1. 单击 Check for Product Updates 来启动 “Update Manager” 程序。
    2. 如果没有可用的更新,可以关闭 “Update Manager” 程序。
    3. 选择 Create Sample Database 选项将创建一个用于安装检验过程的数据库。

      图 2. 创建示例数据库
      创建示例数据库

      数据库创建步骤完成之后,单击 OK 按钮。
    4. 选择 Work with Databases 选项将启动 “Control Center”,可以使用它操作现有的数据库(比如 Sample)。

      图 3. 展开的 Control Center 视图
      展开的 Control Center 视图

    5. 进入 SAMPLE 数据库并选择 Tables 透视图。选择 DEPARTMENT 表将显示这个表中的字段。

      图 4. Department 表的细节
      Department 表的细节

    6. 打开 “Command Line Processor” 窗口使我们能够显示表的内容:

      Start -> IBM DB2 -> Command Line Tools -> Command Line Processor



                          db2 => connect to sample
                          Database Connection Information
                          Database server        = DB2/NT 8.2.4
                          SQL authorization ID   = GIBSON
                          Local database alias   = SAMPLE
                          db2 => select * from department
                          DEPTNO DEPTNAME                      MGRNO  ADMRDEPT LOCATION
                          ------ ----------------------------- ------ -------- ----------------
                          A00    SPIFFY COMPUTER SERVICE DIV.  000010 A00      -
                          B01    PLANNING                      000020 A00      -
                          C01    INFORMATION CENTER            000030 A00      -
                          D01    DEVELOPMENT CENTER            -      A00      -
                          D11    MANUFACTURING SYSTEMS         000060 D01      -
                          D21    ADMINISTRATION SYSTEMS        000070 D01      -
                          E01    SUPPORT SERVICES              000050 A00      -
                          E11    OPERATIONS                    000090 E01      -
                          E21    SOFTWARE SUPPORT              000100 E01      -
                          9 record(s) selected.
                          db2 => disconnect all
                          DB20000I  The SQL DISCONNECT command completed successfully.
                          db2 => quit
                          DB20000I  The QUIT command completed successfully.
                          

 





回页首


Open Database Connectivity(ODBC)

Python 支持使用 Open Database Connectivity 应用程序编程接口(API)来访问数据库。为了让 Python 程序能够访问数据库,需要为数据库定义一个 ODBC 数据源。幸运的是,Windows 支持 ODBC 驱动程序。我们需要做的只是配置一个允许连接 DB2 数据库的 ODBC 数据源。

  1. 打开 Windows Control Panel。
  2. 选择 Administrative Tools
  3. 双击 Data Sources (ODBC) 项。
  4. 在 “User” 或 “System” DSN 选项卡上单击 Add 按钮。

    图 5. 添加数据源
    添加数据源

  5. 选择 IBM DB2 ODBC Driver 并单击 Finish

    图 6. 创建数据源
    创建数据源

  6. 填写表单并单击 OK

    图 7. 添加 Sample 数据源
    添加 Sample 数据源

 





回页首


mxODBC:ODBC 连接

差不多完成了。只需再做一点儿工作就能够将 Python 程序连接到 DB2 数据库。最后需要的是一个提供 ODBC 数据库支持的 Python 模块。

Python Web 站点上的 database topic section 包含使用 Python 访问数据库的信息。这个页面上的 Database Modules 链接包含 mxODBC 包的引用,mxODBC 包是一个 “... 几乎 100% 与 Python DB API 兼容的数据库接口,可以通过 ODBC API 访问。”

应该按照以下步骤获得并安装 mxODBC 包:

  1. eGenix.com 的 mx Extensions for Python 页面上,单击 Base Package 的适当版本的 Download 链接。
  2. 单击 Windows installer, Python 2.4 链接。
  3. 保存下载的文件(例如 egenix-mx-base-2.0.6.win32-py2.4.exe)。
  4. 单击浏览器的回退按钮,然后选择 Commercial Package 的 Download 链接。
  5. 保存下载的文件(例如 egenix-mx-commercial-2.0.7.win32-py2.4.exe)。
  6. 对下载的文件进行病毒扫描。
  7. 在成功的扫描之后,执行每个安装程序。
在某些系统上,尤其是 Windows 2000 系统,在 mxODBC 包的安装过程中可能会看到一个警告,它指出 MDAC SDK 软件需要升级。如果是这种情况,可以采用以下过程从 Microsoft 安装此代码的最新版本。请注意,如果需要这样做,那么需要重新启动系统才能完全安装这个更新。
  1. 访问 Microsoft ODBC 页面
  2. 选择 Downloads
  3. 单击 MDAC 2.8 链接。
  4. 单击 Continue 按钮。
  5. (可选)检查系统并单击 Continue 按钮。
  6. 单击 Download 按钮。
  7. 在系统上保存可执行文件(例如,MDAC_TYP.exe)。
  8. 对保存的文件进行病毒扫描。
  9. 在成功的扫描之后,执行安装程序。
  10. 阅读许可协议,选择 I accept... 并单击 Next 按钮。
  11. 单击 Finish 按钮开始安装。
  12. 在安装之后,重新启动机器。

 





回页首


将各个组件组合在一起

现在要让前面的所有工作产生需要的效果。还可以使用 Python 交互式环境进行检查。

打开一个命令提示,输入下面显示的命令:


            C:\>python
            ActivePython 2.4.3 Build 12 (ActiveState Software Inc.) based on
            Python 2.4.3 (#69, Apr 11 2006, 15:32:42) [MSC v.1310 32 bit (Intel)] on win32
            Type "help", "copyright", "credits" or "license" for more information.
            >>> import mx.ODBC
            >>> import mx.ODBC.Windows
            >>> db = mx.ODBC.Windows.DriverConnect( 'DSN=sample' )
            >>> cursor = db.cursor()
            >>> cursor.execute( 'select * from department' )
            >>> mx.ODBC.print_resultset( cursor )
            Column 1 | Column 2                       | Column 3 | Column 4 | Column 5
            --------------------------------------------------------------------------
            'A00'    | 'SPIFFY COMPUTER SERVICE DIV.' | '000010' | 'A00'    | None
            'B01'    | 'PLANNING'                     | '000020' | 'A00'    | None
            'C01'    | 'INFORMATION CENTER'           | '000030' | 'A00'    | None
            'D01'    | 'DEVELOPMENT CENTER'           | None     | 'A00'    | None
            'D11'    | 'MANUFACTURING SYSTEMS'        | '000060' | 'D01'    | None
            'D21'    | 'ADMINISTRATION SYSTEMS'       | '000070' | 'D01'    | None
            'E01'    | 'SUPPORT SERVICES'             | '000050' | 'A00'    | None
            'E11'    | 'OPERATIONS'                   | '000090' | 'E01'    | None
            'E21'    | 'SOFTWARE SUPPORT'             | '000100' | 'E01'    | None
            >>> cursor.close()
            >>> db.close()
            In order to exit from the interpreter, you
            need to press Ctrl-Z followed by <Enter>.
            >>> ^Z
            

确认代码正常工作之后,可以将这些命令放进一个文本文件中(使用 .py 扩展名表示它是一个 Python 脚本)。然后可以直接执行这个脚本,您将看到相同的输出:


            C:\> type DisplaySampleDept.py
            import mx.ODBC
            import mx.ODBC.Windows
            db = mx.ODBC.Windows.DriverConnect( 'DSN=sample' )
            cursor = db.cursor()
            cursor.execute( 'select * from department' )
            mx.ODBC.print_resultset( cursor )
            cursor.close()
            db.close()
            C:\> python DisplaySampleDept.py
            Column 1 | Column 2                       | Column 3 | Column 4 | Column 5
            --------------------------------------------------------------------------
            'A00'    | 'SPIFFY COMPUTER SERVICE DIV.' | '000010' | 'A00'    | None
            'B01'    | 'PLANNING'                     | '000020' | 'A00'    | None
            'C01'    | 'INFORMATION CENTER'           | '000030' | 'A00'    | None
            'D01'    | 'DEVELOPMENT CENTER'           | None     | 'A00'    | None
            'D11'    | 'MANUFACTURING SYSTEMS'        | '000060' | 'D01'    | None
            'D21'    | 'ADMINISTRATION SYSTEMS'       | '000070' | 'D01'    | None
            'E01'    | 'SUPPORT SERVICES'             | '000050' | 'A00'    | None
            'E11'    | 'OPERATIONS'                   | '000090' | 'E01'    | None
            'E21'    | 'SOFTWARE SUPPORT'             | '000100' | 'E01'    | None
            C:\>
            

既然已经安装并运行了 Python 和 DB2 Express-C,就可以使用这个出色的组合快速轻松地开发一些令人惊异的应用程序。

原文转自:http://www.ltesting.net