一直在使用Python 2.X,最近想测试一下最新的Python 3.2.下载了ActivePython 3.2,PyQt4,Eric5,安装配置完环境.
因为原系统中使用adodbapi连接MSSQL 数据库,所以首先测试一下adodbapi.在ActivePython 3.2中,默认安装了adodbapi的2.4版本,我就直接测试了一下连接数据库.
没想到简单地连接操作就报告错误,一看,是adodbapi.py中的错误,在其中有这样声明的异常处理:
raise er,'No such key as "%s" in %s'%(repr(key),self.__repr__()),tr
就这这里报告错误.然后查看了一下Python 3.2的说明:
raise
Converts raise E, V to raise E(V), and raise E, V, T to raise E(V).with_traceback(T). If E is a tuple, the translation will be incorrect because substituting tuples for exceptions has been removed in 3.0.
原来异常的报告方式发生了变化,就像Print一样.
直接修改为:
raise (er,'No such key as "%s" in %s'%(repr(key),self.__repr__()),tr)
然后调试通过 .
奇怪的是ActivePython 3.2的发行版中怎么还有这个错误?我直接登录adodbapi的网站:
http://sourceforge.net/projects/adodbapi
查看了一下最新版本,这个错误也没有修复.
,难道是我错了?不太清楚.
Python 3.X相对2.X改动比较大,兼容性不好,如果在3.X下直接编译2.X下的代码,会出现很可观的错误提示,好像官方有2to3工具,没有使用,不知道效果如何.