• python 接口自动化测试--代码实现(七)


    数据库还原脚本:

    #! /usr/bin/python
    # coding:utf-8
    import time
    from Engine.SqlEngine import MSSQL
    COUNT=1
    def restoreRelease():
        global COUNT
        checkConSql = "select spid from sysprocesses where dbid in (select dbid from sysdatabases where name='SOATest')"
        restoreSql = "RESTORE DATABASE SOATest FROM DATABASE_SNAPSHOT = 'SOATest_ss'"
        dbc=MSSQL('192.168.1.2','yht','yht','Master')
        conNum = dbc.ExecQuery(checkConSql)
        if COUNT < 5:
            if len(conNum) == 0:
                print(u'%d条连接数,可以还原数据库,还原中...'%len(conNum))
                dbc.ExecNonQuery(restoreSql)
                print(u'数据库还原完成')
                return True
            else:
                print(u'%d条连接数占用无法还原数据库,5秒后重试'%len(conNum))
                time.sleep(5)
                COUNT=COUNT+1
                restoreRelease()
        else:
            print(u'%d条连接数始终占用,已试过5次依然无法还原数据库'%len(conNum))
            return False
    SqlEngine.py
    #! /usr/bin/python
    # coding:utf-8
    import pymssql
    import sys
    from Engine.DataEngine import decoCatchExcep
    reload(sys)
    sys.setdefaultencoding('utf-8')
    class MSSQL(object):
        """
        对pymssql的简单封装
        pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
        使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启
    
        用法:
    
        """
    
        def __init__(self,host,user,pwd,db):
            self.host = host
            self.user = user
            self.pwd = pwd
            self.db = db
    
        def __GetConnect(self):
            """
            得到连接信息
            返回: conn.cursor()
            """
            if not self.db:
                raise(NameError,"没有设置数据库信息")
            self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
            cur = self.conn.cursor()
            if not cur:
                raise(NameError,"连接数据库失败")
            else:
                return cur
        @decoCatchExcep
        def ExecQuery(self,sql):
    
            cur = self.__GetConnect()
            cur.execute(sql)
            resList = cur.fetchall()
            self.conn.close()
            return resList
        @decoCatchExcep
        def ExecNonQuery(self,sql):
            cur = self.__GetConnect()
            self.conn.autocommit(True)
            cur.execute(sql)
            self.conn.autocommit(False)
            self.conn.commit()
            self.conn.close()

    装饰器decoCatchExcep:

    def decoCatchExcep(func):
        def _decoCatchExcep(*args, **kwargs):
            try:
                ret = func(*args, **kwargs)
                return ret
            except Exception,e:
                print(func.__name__+' : '+str(e).encode('gb18030'))
                LogPro.writeException(str(e).encode('gb18030'))
        return _decoCatchExcep
     
  • 相关阅读:
    spark 机器学习 随机森林 实现(二)
    spark 机器学习 随机森林 原理(一)
    spark 机器学习 决策树 原理(一)
    spark 机器学习 朴素贝叶斯 实现(二)
    ★★★★★★★★★★★★★博客园的文章目录★★★★★★★★★★★★
    celery 的使用
    rabbitmq 参考手册
    rabbitmq 的简单使用
    django 常用组件
    celery 参考资料
  • 原文地址:https://www.cnblogs.com/hito/p/5680352.html
Copyright © 2020-2023  润新知