如何用PYTHON链接DB2?

如何用PYTHON链接DB2?

TX指点一二,不太熟悉!
socketref在:http://www.cppblog.com/socketref/default.html?page=2
上有解决方法,但是有个小小的错误,更正一下,成功了!
原文如下:
公司的项目中有访问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 *):

< SQLPOINTER buf = (SQLPOINTER)((SQLCHAR
*)bs->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编译的

--------------
也许顺序有点问题,调整为:
This can be resolved by casting to (SQLCHAR *) instead
of a (void *):

SQLPOINTER buf = (SQLPOINTER)((void *)bs->buf +(bs->bufLen * idx));

发现原来SQLCHAR类型没有找到,没问题,找到_db2_module.c:1855行修改为:
<SQLPOINTER buf = (SQLPOINTER)((SQLCHAR *)bs->buf + (bs->bufLen * idx));
上面这句话最重要了。

可以了!