接口测试框架层级目录结构示意图:

  • page目录下面的mysqlTest.py:存放的是mysql的操作代码
  • utils目录下面的helper.py:存放的是公共的配置方法
  • log目录log.md:存放的日志信息
  • data目录下面:存放的是公共数据的分离
  • testCase目录下面的test_tasks文件:存放的是接口测试用例
  • config目录config.ini文件:存放的配置文件信息

我之前在helper.py文件中写入过getConfig这个方法方便我们后面使用到mysql读取config.ini写好的配置信息。

helper.py文件如下:

#coding=utf-
__author__ = "Fighter Lu" #cmd pip install xlrd 安装失败 再次安装 import os
import xlrd
import json
import logging
# import configparser #py3
import ConfigParser #py2 class Helper(object): def dir_base(self,fileName,filepath='data'): #默认参数
'''
获取要读取的文件路径
:parameter filepath:文件存储的文件路径文件夹名称
:parameter fileName:要操作的文件的名字
'''
return os.path.join(os.path.dirname(os.path.dirname(__file__)),filepath,fileName) def log(self,log_content):
'''定义log日志级别'''
# 定义文件
logFile = logging.FileHandler(self.dir_base('log.md','log'), 'a')
# log格式
fmt = logging.Formatter(fmt='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s')
logFile.setFormatter(fmt)
# 定义日志
logger1 = logging.Logger('logTest',level=logging.DEBUG)
logger1.addHandler(logFile)
logger1.info(log_content) def getReader(self,rowx,index=''):
'''
读取excel文件数据
:parameter index:读取excel的sheet
:parameter rowx:读取第几行
'''
sheet =xlrd.open_workbook(self.dir_base('fours.xlsx'))
table=sheet.sheet_by_index(int(index)) #获取第一个sheet
return table.row_values(rowx) #读取行 def getUrl(self,rowx):
'''
获取接口测试中的请求地址
:parameter index:读取excel的sheet
:parameter rowx:读取第几行
'''
return self.getReader(rowx)[] #获取 def getData(self,rowx):
'''
获取接口测试中的请求地址
:parameter index:读取excel的sheet
:parameter rowx:读取第几行
'''
# return self.getReader(rowx)[] # 获取 转换为字典类型 反序列化转为字典类型
return json.loads(self.getReader(rowx)[]) def getConfig(self): #py2 py3加 encoding='utf-8' 否则报错ascii
'''读取配置文件中的内容'''
list = []
config = ConfigParser.ConfigParser()
config.read(self.dir_base('config.ini', 'config'))
hostname = config.get(config.sections()[], 'host')
username = config.get(config.sections()[], 'username')
password = config.get(config.sections()[], 'password')
list.append(hostname)
list.append(username)
list.append(password)
return list # def getConfig(self): #python3
# '''读取配置文件中的内容'''
# list = []
# config = configparser.ConfigParser()
# config.read(self.dir_base('config.ini','config'),encoding='utf-8')
# hostname=config.get(config.sections()[],'host')
# username=config.get(config.sections()[],'username')
# password=config.get(config.sections()[],'password')
# list.append(hostname)
# list.append(username)
# list.append(password)
# return list per = Helper()
# print(per.getReader())
# # print(type(per.getReader()))
# # print(type(per.getReader()[]))
# print(per.getUrl())
# print(type(per.getUrl()))
# print(per.getData())
print(per.getConfig())

myTest.py文件下面的代码:

#coding=utf-
__author__ = "Fighter Lu" # status 状态
# net start mysql
# net stop mysql
# mysql -h localhost -u root -p 使用该命令访问mysql
# show databases; 查看mysql有哪些库
# use db; 切换数库
# show tables;查看有哪些表
# desc xxx; 查看表中有哪些字段
# show create table user \G: 查看创建表的脚本 信息
import MySQLdb
def connectMySql():
'''连接mysql'''
try:
connect = MySQLdb.connect(host='127.0.0.1',user='root',passwd='admin123',db='mysql')
print (u'连接成功!')
except Exception as e:
raise ('连接mysql失败!') #错误演示
else:
pass
finally:
connect.close() #有打开就有关闭
connectMySql()

下面我读取config.ini文件的配置信息:

import JieKou.utils.helper import *

先将helper.py下面的getConfig方法调用过来,然后在进行读取:

    def getConfig(self): #py2    py3加 encoding='utf-8' 否则报错ascii
'''读取配置文件中的内容'''
list = []
config = ConfigParser.ConfigParser()
config.read(self.dir_base('config.ini', 'config'))
hostname = config.get(config.sections()[], 'host')
username = config.get(config.sections()[], 'username')
password = config.get(config.sections()[], 'password')
list.append(hostname)
list.append(username)
list.append(password)
return list

调用getConfig方法进行调试,下面的代码是myTest.py:

import MySQLdb
from JieKou.utils.helper import Helper def connectMySql():
'''连接mysql'''
try:
connect = MySQLdb.connect(host='127.0.0.1',user='root',passwd='admin123',db='mysql')
print (u'连接成功!')
except Exception as e:
raise ('连接mysql失败!') #错误演示
else:
pass
finally:
connect.close() #有打开就有关闭
# connectMySql()
per = Helper()
print (per.getConfig())
print (per.getConfig()[])
print (type(per.getConfig()))

config.ini文件代码如下:

[阿里云CI服务器()]
host = 127.0.0.1
username = root
password = admin123 [阿里云CI服务器()]
host = 127.0.0.1
username = admin
password = sdfsadfsdfa

myTests.py文件读取config.ini文件:

import MySQLdb
from JieKou.utils.helper import Helper def connectMySql():
'''连接mysql'''
try:
connect = MySQLdb.connect(
host=per.getConfig()[],
user=per.getConfig()[],
passwd=per.getConfig()[],
db='mysql')
print (u'连接成功!')
except Exception as e:
raise ('连接mysql失败!') #错误演示
else:
pass
finally:
connect.close() #有打开就有关闭 connectMySql()

出现报错:

Traceback (most recent call last):
File "D:/project/JieKou/page/mysqTests.py", line , in <module>
connectMySql()
File "D:/project/JieKou/page/mysqTests.py", line , in connectMySql
connect.close() #有打开就有关闭
['127.0.0.1', 'root', 'admin123']
UnboundLocalError: local variable 'connect' referenced before assignment

解决方法:

import MySQLdb
from JieKou.utils.helper import Helper def connectMySql():
'''连接mysql'''
try:
per = Helper()
connect = MySQLdb.connect(
host=per.getConfig()[],
user= per.getConfig()[],
passwd=per.getConfig()[],
db='mysql')
print (u'连接成功!')
except Exception as e:
raise ('连接mysql失败!') #错误演示
else:
pass
finally:
connect.close() #有打开就有关闭 connectMySql()

没有导入实例化对象 per = Helper(),导入即可解决报错!这时候就显示正常了!!!

C:\Python27\python2.exe D:/project/JieKou/page/mysqTests.py
['127.0.0.1', 'root', 'admin123']
连接成功! Process finished with exit code

python操作mysql数据库系列-操作MySql数据库(二)的更多相关文章

  1. [数据库系列之MySQL]Mysql优化笔记

    大型网站提速之MySql优化 数据库优化包括的方面 数据库优化是一个综合性的技术,并不是通过某一种方式让数据库效率提高很多,而是通过多方面的提高,从而使得数据库提高很多. 主要包括: 1.表的设计合理 ...

  2. [数据库系列之MySQL] Mysql整体架构浅析一

    一.引言 平时我们在做Java系统时,一般情况下都会连接到一个MySQL数据库上去,执行各种增删改查的语句.大部分的Java工程师对MySQL的了解和掌握程度,大致就停留在这么一个阶段:对MySQL可 ...

  3. mysql小白系列_02 mysql源码安装标准化

    问题: 1.为什么数据目录和日志目录需要分开? 2.如何标准化配置多实例?(例如:一台物理主机上部署3306与3307两个实例) 3.详细描述MySQL编译安装的过程(截图安装步骤) 1.为什么数据目 ...

  4. 数据库系列:MySQL索引优化总结(综合版)

    1 背景 作为一个常年在一线带组的Owner以及老面试官,我们面试的目标基本都是一线的开发人员.从服务端这个技术栈出发,问题的范围主要还是围绕开发语言(Java.Go)等核心知识点.数据库技术.缓存技 ...

  5. 【数据库系列】MySql中的select的锁表范围

    由于InnoDB预设的是Row-Level Lock,只有明确指定主键的时候MySql才会执行Row lock,否则MySql将会执行Table Lock. 1.明确指定主键则是行锁 2.明确指定主键 ...

  6. Python档案袋(文件系列操作 )

    文件读写基础 简单的读文件: # r 表示只能读 #打开文件,得到文件光标对象,文件不存在则报错 f=open("ww.txt","r",encoding=&q ...

  7. mysql小白系列_09 mysql性能优化关键点

    一 服务器参数调优,有哪些关键点? 1. 应用访问优化 优化方法 性能提升效果 优化成本 说明 减少数据访问能不访问就不访问-减少磁盘IO 1~1000 低 缓存服务器缓存mysql数据,Redis. ...

  8. mysql小白系列_10 mysql主从复制原理

    1.如何解决主从复制延迟的问题? (1)主从复制原理 http://www.cnblogs.com/jenvid/p/8410922.html 1.salve执行slave start,salve服务 ...

  9. Python学习(21)python操作mysql数据库_操作

    目录 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 删除操作 执行事务 错误处理 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TEST. 在TEST数 ...

随机推荐

  1. 浅谈PHP面向对象编程(四、类常量和静态成员)

    4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和 ...

  2. Python的urllib和urllib2模块

    Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: urllib2可以接受一个Request对象,并以此可以来设置一个URL的h ...

  3. day-9心得

    操作系统发展史 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入 ...

  4. Java-从堆栈常量池解析equals()与==

    一.基本概念 ①JAVA中的基本数据类型(简单类型,内置类型): 字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(do ...

  5. DotNetBar For Windows Forms 12.5.0.2 官方原版及注册

    转自原文DotNetBar For Windows Forms 12.5.0.2 官方原版及注册 DotNetBar是一款带有56个 Windows Form 控件的工具箱,使开发人员可以轻而易举地创 ...

  6. [转] 实现winfrom进度条及进度信息提示,winfrom程序假死处理

    china_xuhua 原文地址 1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线 ...

  7. Shiro session和Spring session一样吗?

    出自:https://yq.aliyun.com/articles/114167?t=t1 1. 疑问 我们在项目中使用了spring mvc作为MVC框架,shiro作为权限控制框架,在使用过程中慢 ...

  8. 安装mule-standalone说明

    1,将mule-standalone-3.4.0.zip 放到 /usr/local/ 下 2,unzip mule-standalone-3.4.0.zip 3, cd /usr/local/mul ...

  9. S数据导入

    一. 职责下的视图导入先对比UAT172和PROD 177的数据,若177比172多的数据进行删除,若172比177多的数据,重新加入到177. 1.删除177多余的 搜索一个177比172多的,进行 ...

  10. Library not found for -lAPOpenSdk

    多人开发合作的时候 总是会遇见各种各样的问题 今天就来讲一个关于友盟的问题 在我的小伙伴 用cocoapods 中添加了这样一句话 pod ‘UMengSocialCOM’,  并且pod updat ...