使用 Python 和 DB2 Express-C 开发应用程序
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 语句将比较变量 a 和 b 的值。如果它们相等,则执行第 2 行上的语句。只有在变量 a 的值等于变量 b 且变量 c 的值等于变量 d 的情况下,才会看到第 3 行生成的输出。另一个 print 语句(第 5 行)只在 a 的值不等于 b 时执行,无论 c 和 d 的值是什么。
如果您还不熟悉 Python 语言,那么该考虑学学了。
表 1:安装 Python
任务 |
说明 |
备注/结果 |
安装 Python for Windows 最容易的方法是使用 ActiveState 站点 |
获取 Python 并开始安装
- 在 ActivePython 页面上选择 Free Download 链接。
- (可选)填写信息并单击 Next 按钮。
- 找到适当的下载映像(比如 “Windows/x86”)。
- 右击链接并保存安装可执行文件。
- 用最新的病毒检查程序进行扫描。
- 在 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、.NET、PHP 等等)提供了坚实的基础。DB2 Express-C 可以用在 32 位或 64 位硬件上运行的 Linux® 和 Windows 上,系统最多有 2 个 CPU 和 4GB 的内存。
使用 DB2 Express-C 的许多原因是显而易见的。其中比较重要的是:
|
|
回页首 |
|
Open Database Connectivity(ODBC)
Python 支持使用 Open Database Connectivity 应用程序编程接口(API)来访问数据库。为了让 Python 程序能够访问数据库,需要为数据库定义一个 ODBC 数据源。幸运的是,Windows 支持 ODBC 驱动程序。我们需要做的只是配置一个允许连接 DB2 数据库的 ODBC 数据源。
- 打开 Windows Control Panel。
- 选择 Administrative Tools。
- 双击 Data Sources (ODBC) 项。
- 在 “User” 或 “System” DSN 选项卡上单击 Add 按钮。
图 5. 添加数据源
- 选择
IBM DB2 ODBC Driver
并单击 Finish。
图 6. 创建数据源
- 填写表单并单击 OK。
图 7. 添加 Sample 数据源
|
回页首 |
|
mxODBC:ODBC 连接
差不多完成了。只需再做一点儿工作就能够将 Python 程序连接到 DB2 数据库。最后需要的是一个提供 ODBC 数据库支持的 Python 模块。
Python Web 站点上的 database topic section 包含使用 Python 访问数据库的信息。这个页面上的 Database Modules 链接包含 mxODBC 包的引用,mxODBC 包是一个 “... 几乎 100% 与 Python DB API 兼容的数据库接口,可以通过 ODBC API 访问。”
应该按照以下步骤获得并安装 mxODBC 包:
- 在 eGenix.com 的 mx Extensions for Python 页面上,单击 Base Package 的适当版本的 Download 链接。
- 单击 Windows installer, Python 2.4 链接。
- 保存下载的文件(例如 egenix-mx-base-2.0.6.win32-py2.4.exe)。
- 单击浏览器的回退按钮,然后选择 Commercial Package 的 Download 链接。
- 保存下载的文件(例如 egenix-mx-commercial-2.0.7.win32-py2.4.exe)。
- 对下载的文件进行病毒扫描。
- 在成功的扫描之后,执行每个安装程序。
在某些系统上,尤其是 Windows 2000 系统,在 mxODBC 包的安装过程中可能会看到一个警告,它指出 MDAC SDK 软件需要升级。如果是这种情况,可以采用以下过程从 Microsoft 安装此代码的最新版本。请注意,如果需要这样做,那么需要重新启动系统才能完全安装这个更新。
- 访问 Microsoft ODBC 页面。
- 选择 Downloads。
- 单击 MDAC 2.8 链接。
- 单击 Continue 按钮。
- (可选)检查系统并单击 Continue 按钮。
- 单击 Download 按钮。
- 在系统上保存可执行文件(例如,MDAC_TYP.exe)。
- 对保存的文件进行病毒扫描。
- 在成功的扫描之后,执行安装程序。
- 阅读许可协议,选择 I accept... 并单击 Next 按钮。
- 单击 Finish 按钮开始安装。
- 在安装之后,重新启动机器。
|
回页首 |
|
将各个组件组合在一起
现在要让前面的所有工作产生需要的效果。还可以使用 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
|