今天有很多时间,再与大家分享一个最近使用的到第三方控件,个人认为对设计一些数据库测试脚本非常有用。
首先,请访问这个地址: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.
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.msiegenix-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
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 )
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请查询文章中所给的地址。