今天有很多时间,再与大家分享一个最近使用的到第三方控件,个人认为对设计一些数据库测试脚本非常有用。
首先,请访问这个地址:http://www.egenix.com/products/python/mxODBC/,此控件是一个ODBC的通用插件。
这为我们通过Windows系统,制作各种测试脚本提供很好操作平台。DB-API:http://www.python.org/dev/peps/pep-0249/
Download
AsuccessfulinstallationofmxODBCrequiresthesethreesteps:

BeforecontinuingwiththedownloadofmxODBC
,
firstmakesurethatyouhaveinstalledtheeGenix.commxBaseDistribution
,
sincetheeGenix.commxODBCDistributionisanadd-ontoourbasesetofPythonextensions.
Thedownloadsbelowdonotcontainanylicensekeys.Youwilleitherhavetoobtainevaluationlicensesorbuyproductionlicensesinordertosuccessfullyinstallandusethepackage.
SelecttherightdownloadforyourplatformandPythonversionandthenheadontotheinstallationinstructionsbelow.
IMPORTANT:
Bydownloading
,
installingorusingtheeGenixmxODBCDistribution
,
youagreetothetermsandconditionssetforthintheeGenix.comCommercialLicenseAgreement
1.2.0
.
Redistributionofthesefilesisnotallowed.PleasecontacttheeGenixSalesTeamfordetailsaboutredistributionpossibilitiesandterms.
下载控件清单:
egenix-mx-base-3.0.0.win32-py2.5.ms
egenix-mx-experimental-3.0.0.win32-py2.5.msi
egenix-mxodbc-3.0.1.win32-py2.5.msi
注册License
eGenix.comCommercialLicenseAgreement1.2.0,注意填好后,Liscense会被发送到邮箱
Lincense拷贝的路径,本机地址:C:\Python25\Lib\site-packages\mx\ODBC
如果没有注册Liscense,会有如下提示:
以下提供一段测试程序,该段程序为清除Db2中的两表数据:
#
-*-coding:cp936-*-
import
mx.ODBC
import
mx.ODBC.Windows

IDLE中提示:
Traceback(mostrecentcalllast):
File
"
E: tpSearch_Table.py
"
,line
3
,
in
<
module
>
import
mx.ODBC.Windows
File
"
mxODBCWindows__init__.py
"
,line
9
,
in
<
module
>
ImportError:initializationofmodulemxODBCfailed(
<
class
'
mx.ODBC.Windows.LicenseError
'
>
:mx.ODBC.licensecould
not
beloaded;pleasevisitthehttp:
//
www.egenix.com
/
web
-
sitetoobtainalicensefile
or
writetolicenses@egenix.com
for
information.)

提取有效部分:licensecould
not
beloaded;pleasevisitthehttp:
//
www.egenix.com
/
web
-
sitetoobtainalicensefile
or
writetolicenses@egenix.com
for
information
#
-*-coding:cp936-*-
import
mx.ODBC
import
mx.ODBC.Windows
import
sys,os,time

class
db2_test():

def
__init__
(self,tablename1,tablename2):
self.tablename1
=
tablename1
self.tablename2
=
tablename2
print
self.tablename1,self.tablename2

#
清除任意制定表数据
def
truncate_table(self):
db
=
mx.ODBC.Windows.DriverConnect(
'
DSN=infospy
'
)
cursor
=
db.cursor()
cursor.execute(
"
ALTERTABLE%sACTIVATENOTLOGGEDINITiALLYWITHEMPTYTABLE;
"
%
(self.tablename1))
cursor.execute(
"
ALTERTABLE%sACTIVATENOTLOGGEDINITiALLYWITHEMPTYTABLE;
"
%
(self.tablename2))
cursor.execute(
"
Commit;
"
)
cursor.close()
db.close()
print
"
表%s;%s;清除数据成功!
"
%
(self.tablename1,self.tablename2)

if
__name__
==
"
__main__
"
:
tablename1
=
"
test_table_1
"
tablename2
=
"
test_table_2
"
db2
=
db2_test(tablename1,tablename2)
db2.truncate_table()
time.sleep(
3
)
sys.exit(
1
)
db=mx.ODBC.Windows.DriverConnect('DSN=infospy') DSN为在WindowsODBC中配置的数据源名
有关ODBC配置,此贴略。由于时间关系,详细的API请查询文章中所给的地址。