下面是在本文中要执行的任务:
- 获取并安装 Python
- 获取并安装 DB2 Express-C
- 创建示例数据库
- 使用 DB2 Control Center 查看关于数据库的详细信息
- 使用 DB2 Command Line Processor 查看一些表内容
- 为示例数据库设置 Windows® ODBC Datasource
- 获取并安装 Python mxODBC 包
- 在 Python 脚本中使用 mxODBC 访问数据库
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 语言,那么该考虑学学了。
| 任务 | 说明 | 备注/结果 | |
| 安装 Python for Windows 最容易的方法是使用 ActiveState 站点 | 获取 Python 并开始安装
| 将 Python 安装到适当的位置,比如 C:\Python24。
| |
| 检验 Python 安装 | 打开一个新的命令提示,并输入
| 应该会显示已经安装的程序的版本:
| |
| 如果犯了错误,忘了 -V | 那么会看到 Python 解释器的命令提示,而不是只看到版本号:
|
您无意间启动了 Python 解释器。可按
Ctrl-Z
和
<Enter>
退出解释器。
|
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 的许多原因是显而易见的。其中比较重要的是:
- 价格
它是免费的。
- 可伸缩性
当需要额外的功能和特性时,可以快速轻松地升级到适合自己需要的 DB2 产品的付费版本。
- 容易获得(执行这些步骤甚至比列出它们还要容易):
- 将浏览器指向 DB2 Express-C 下载站点。
- 保存 Message Digest 5(MD5)签名。
- 单击 Download 链接。
- 如果需要,可进行注册。
- 登录。
- 检查个人信息和设置。
- 查看并检查许可协议。
- 选择 I agree 复选框。
- 单击 I confirm 按钮。
- 选择适合自己需要的下载技术,并单击对应的 Download now 链接。
- 指定适当的目标位置。
- 使用保存的 Message Digest 签名(参见上面的第 2 步)检查接收到的映像的完整性。
- 使用可靠的反病毒程序检查接收到的文件中是否有病毒。
- 容易设置(注意:需要重新启动系统才能完成产品的安装):
- 将存档文件展开成适当的安装目录结构。
- 使用 Windows Explorer 进入展开后的目录结构(比如
db2exc_NT_x86)并找到setup.exe。 - 双击 setup.exe 来执行它。
- 使用 “Installation Prerequisites” 选项检查自己的环境是否适合这个产品。
- 使用 “Release Notes” 选项显示关于产品的最新信息。
- 使用 “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
- 单击 Check for Product Updates 来启动 “Update Manager” 程序。
- 如果没有可用的更新,可以关闭 “Update Manager” 程序。
- 选择 Create Sample Database 选项将创建一个用于安装检验过程的数据库。
图 2. 创建示例数据库
数据库创建步骤完成之后,单击 OK 按钮。 - 选择 Work with Databases 选项将启动 “Control Center”,可以使用它操作现有的数据库(比如 Sample)。
图 3. 展开的 Control Center 视图
- 进入 SAMPLE 数据库并选择 Tables 透视图。选择 DEPARTMENT 表将显示这个表中的字段。
图 4. Department 表的细节
- 打开 “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 数据源。
- 打开 Windows Control Panel。
- 选择 Administrative Tools。
- 双击 Data Sources (ODBC) 项。
- 在 “User” 或 “System” DSN 选项卡上单击 Add 按钮。
图 5. 添加数据源
- 选择
IBM DB2 ODBC Driver并单击 Finish。
图 6. 创建数据源
- 填写表单并单击 OK。
图 7. 添加 Sample 数据源
差不多完成了。只需再做一点儿工作就能够将 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)。
- 对下载的文件进行病毒扫描。
- 在成功的扫描之后,执行每个安装程序。
- 访问 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() |
确认代码正常工作之后,可以将这些命令放进一个文本文件中(使用 .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,就可以使用这个出色的组合快速轻松地开发一些令人惊异的应用程序。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
-
开始学习 Python 最好的方式之一是使用可以从 Python web 站点免费获得的 Python 教程。
-
Python 主页 上有许多关于 Python 语言的信息。Python 代码很容易阅读和理解,也很容易学会如何用它编写程序。还有许多书籍和互联网站点可以帮助您学习和理解这种语言。
-
还应该看看 developerWorks 站点上的 可爱的 Python 和 探索 Python 系列。
-
Python 站点上有许多信息的引用,其中包括一个关于 数据库主题 的专区。
-
如果您是 DB2 for Linux, UNIX and Windows 的初学者,那么您可能有兴趣看看 developerWorks 编辑收集整理的 文章和文件,它们可以帮助您学习 DB2 和 IBM Information Management 软件。
-
Open Database Connectivity
(ODBC) 是一个规范,定义了程序如何连接任何实现了符合规范的 API 的数据库。
-
在 DB2 Express-C Web 站点 上进一步了解 DB2 Express。
获得产品和技术
-
DB2 Express-C for Linux and Windows 是一种免费的数据服务器,可以在开发和部署中使用。
-
很容易从互联网上获得 Message Digest 5 实用程序的源代码和二进制版本。我使用 Google 搜索引擎
搜索 互联网,找到了 Message Digest 5 实用程序,可以下载并使用这个程序对收到的文件进行检查。
-
Python download 允许下载满足您需要的版本和安装包。
-
eGenix.com 站点包含一些 “eGenix mx Extensions for Python” 实用程序。
-
Microsoft ODBC 页面包含您可能需要的一些参考资料。
讨论

Bob Gibson 是一名咨询软件工程师,在 IBM 的多个软件相关职务上拥有超过 25 年的工作经验,其中包括应用程序开发人员、架构师、教员、技术支持和测试人员。目前他是技术支持部门的一个小组领导,负责 IBM 的 WebSphere Distributed Application Server。他拥有 弗吉尼亚大学 的工程学学士学位和计算机科学硕士学位。
