数据库还原脚本:

#! /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

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

用例读入数据库: #! /usr/bin/python # coding:utf-8 import sys,os from Engine import DataEngine reload(sys) s ...

python接口自动化测试七:获取登录的Cookies

python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

基于Python接口自动化测试框架&plus;数据与代码分离&lpar;进阶篇&rpar;附源码

引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

python 接口自动化测试(三)

1.WriteIni.py import ConfigParser cf = ConfigParser.ConfigParser() cf.add_section("PC_WSDL&quot ...

记录python接口自动化测试--简单总结一下学习过程&lpar;第十目&rpar;

至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...

python - 接口自动化测试实战 - case1 - 再次优化版

本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

python接口自动化测试(一)

本节开始,开始介绍python的接口自动化测试,首先需要搭建python开发环境,到https://www.python.org/下载python 版本直接安装就以了,建议 下载python2.7.1 ...

随机推荐

重启SQL Server——总是好事?

在实际工作中,我经常看到——有时人们定期重启SQL Server!我们都希望接受,SQL Server的定期重启并不真的是一个好主意.但在今天的文章里,我想进一步讨论下,当你定期重启你的SQL Ser ...

Qt中使用Windows API

在Windows平台上进行开发,不可避免与Windows API打交道,Qt中使用的时候要添加对应API的头文件和链接lib文件,另外使用的Windows API的代码部分要使用#ifdef  Q_O ...

JNI 学习笔记系列&lpar;二&rpar;

c中没有Boolean类型的值,一般是使用1表示true,0表示false,c中也没有String类型的数据,c中的字符串要通过char数组来表示.c中没有byte类型,一般用char表示byte类型 ...

linq分组查询

string[] arrStr = { ".com", "www.baidu.com", "www.qq.com", "www.b ...

&amp&semi;lt&semi;源代码&amp&semi;gt&semi;FTPclient追加方式上传自己定义信息

实现功能:向FTPserver以追加方式上传自己定义信息(例程中为:2014-10-08 13:47:15 test.) 源代码下载(免积分): ...

bcp和load table

使用BCP和LOAD TABLE联合完成Sybase IQ 的数据导出和导入工作.说明: 表(视图)GN_TEST只有两个字段,TIMEID和MSISDN, 导出时我用'|'作为字段分隔符,'&amp ...

Python中&lowbar;&lowbar;init&lowbar;&lowbar;和&lowbar;&lowbar;new&lowbar;&lowbar;的区别详解

__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- cod ...

PHP之旅5 php的函数

函数的结构 php的函数和其他语言的函数基本类似,和C语言比较的话主要区别在于php是一个弱语言,对类型不敏感,在函数的表现上就是,php函数没有类型定义,不像语言即使无参也要定义为void,而且不管 ...

python操作word(改课文格式)【最终版】

python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这 ...

PBR探索

原理 根据能量守恒,以及一系列光照原理得出微表面BRDF(Bidirectional Reflectance Distribution Function)公式 // D(h) F(v,h) G(l,v ...