python连接DB2 (pydb2)


公司的项目中有访问DB2数据的需求,我以前也只是听说DB2有这么个咚咚,据说也是个恐龙级的数据库。以前也没有用过DB2 在c语言的接口(访问oracle我一直用oci),网上一兜,才发现DB2有JDBC的访问接口,c方面的很少。
项目的工期比较紧,同时我也不想花太多的时间研究数据库访问接口,所以在项目中许多模块都是用python编写,开发周期短,调试,跨平台也是很吸引人,所以就用python拉。在python.org一搜索,便找到了pydb2,OK! 马上下载pydb1.2,一解开压缩包,原来是原代码,只能编译拉。还好有编译脚本:), 运行setup.py install
出现以下异常:
Compiling under Visual Studio .NET v7 recieves the
following error:
_db2_module.c(1855) : error C2036: 'SQLPOINTER' :
unknown size
This can be resolved by casting to (SQLCHAR *) instead
of a (void *):
buf + (bs->bufLen * idx));
发现原来SQLCHAR类型没有找到,没问题,找到_db2_module.c:1855行修改为:
SQLPOINTER buf = (SQLPOINTER)((void *)bs->buf +
(bs->bufLen * idx));
再次 setup.py install
ok,编译成功,db2.py的模块也被拷贝得到 $PYTHONHOME/lib/site_pakages/下去了
然后安装db2 client runtime
这样就完成了pydb2的运行配置。然后就在odbc中配置一个dsn
测试以下代码:
import DB2
conn = DB2.connect(dsn='sample', uid='db2inst1', pwd='secret')
无异常表示成功连接上DB2
之后访问数据库只要遵循python DBI2.0的规范就可以拉!
生活在python世界是很快乐的事情!
*注意: python2.4的话必须用vc7.1编译pydb2的扩展模块,因为python2.4(win32)也是用vc7.1编译的