Python接口测试之对MySQL的操作(六)
本文章主要来说python对mysql数据库的基本操作,当然,前提是已经搭建了python环境和搭建了Mysql
数据库的环境,python操作mysql数据库提供了MySQLdb库,下载的地址为:
https://pypi.python.org/pypi/MySQL-python/1.2.4
见官方下载的截图:
下载文件后,直接进行安装,安装的方式这里不在介绍,如有不明白,可以bing下,安装完成后,在python的命令行环境下
看是否可以导入MySQLdb,如果可以导入并且无任何的错误提示,表示已经安装成功了,见截图:
已经很成功的安装了python操作mysql的数据库,在这里,我们详细的介绍对python对mysql的增加,删除,修改
和查询的基本操作,这里使用的数据库名称是“day2017”,我们对数据库的操作,首先是创建数据库,然后是在数据库中
创建表,在这里,表的名称为:userInfo,见创建好的表字段信息:
OK,创建好数据库以及创建好了数据库中的表以后,下来开始操作数据库,操作数据库的第一步当然是连接数据库,然后是
创建游标,接下来是对数据库的各种操作,这里我们先来操作Insert数据的操作,见实现的代码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb def insert_One():
'''插入一条数据'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor()
sql = 'INSERT INTO userInfo VALUES (%s,%s,%s,%s)'
params = (1, 'admin', 'admin', 'wuya@outlook.com',)
cur.execute(sql, params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
insert_One()

查看数据库,可以看到,数据已经插入到数据库中,见查询的结果:
在上面的案例中,只是插入了单条数据,实际上,某些时候,会插入多条数据,也就是批量插入,批量插入实现的代码为:

def insert_Many():
'''批量插入数据'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor()
sql = 'INSERT INTO userInfo VALUES (%s,%s,%s,%s)'
params = [
(2,'wuya','admin','wuya@outlook.com'),
(3,'weke','admin','weke@outlook.com')
]
cur.executemany(sql, params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
insert_Many()

接下来,我们来查看数据库的查询,数据查询分为二种,一种是查询的结果是一条语句,使用的是fetchone()方法,另外一种是查询的数据
结果是多条,使用的方法是fetchmany(),我们分别来看这二个方法的使用,我们先来看单条数据的查询,见实现的代码:

import MySQLdb def select_one():
'''单条数据的查询'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'select * from userInfo where id=%s'
params = (1,)
data=cur.execute(sql, params)
print cur.fetchone()
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
select_one()

多条数据的查询,见实现的代码:

import MySQLdb def select_Many():
'''多条数据的查询'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'select * from userInfo'
ret=cur.execute(sql)
data=cur.fetchall()
for item in data:
print item
finally:
cur.close()
conn.close() if __name__=='__main__':
select_Many()

下面我们来看更新语句的测试,见实现的代码:

import MySQLdb def update_Test():
'''更新语句测试'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'update userInfo set username=%s where id=%s'
params=('system',1,)
ret=cur.execute(sql,params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
update_Test()

最后一步,也就是删除数据了,直接看如下的实现代码:

import MySQLdb def delete_Test():
'''删除语句测试'''
try:
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
except:
print u'连接mysql数据库失败'
else:
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
sql = 'delete from userInfo where id=%s'
params=(3,)
ret=cur.execute(sql,params)
conn.commit()
finally:
cur.close()
conn.close() if __name__=='__main__':
delete_Test()

事实上,对于如上操作数据库的方式,有很多的代码是可以重够的,比如连接数据库的方式,另外,我们可以把操作数据库的
方式写在一个类里面,在业务调用的时候直接调用我们的数据库方法进行操作,见下面操作mysql数据库的方法,见源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb class MySQLHelper(object):
def __init__(self):
pass def get_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='server',db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='server', db='day2017')
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功'

把连接数据库部分进行重构,放到一个config.py的文件中,这样我们连接数据库的方法就只需要在config.py文件维护了,而不
需要在如上代码中每个都得看的修改,这实在是很糟糕,见重构后的config.py文件源码:
#!/usr/bin/env python
#coding:utf-8 conn_dict=dict(host='127.0.0.1', user='root', passwd='server', db='day2017')
见重构后操作mysql的数据库方法,见源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb
import config class MySQLHelper(object):
def __init__(self):
self.conn=config.conn_dict def get_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功'

写数据库的操作方法,是为了进行对业务的操作,要不仅仅写这些没什么实际的意义,如我们实现输入用户名和密码,在
在数据库中验证,如果用户名和密码都是admin,那么通过,如果有其中一个不是admin,就提示用户,请提示用户用户名
或者密码错误,下面来实现这样的一个过程,见实现的源码:

#!/usr/bin/env python
#coding:utf-8 import MySQLdb
import config class MySQLHelper(object):
def __init__(self):
self.conn=config.conn_dict def get_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchone()
cur.close()
conn.close()
return data def get_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
retCount = cur.execute(sql,params)
data = cur.fetchall()
cur.close()
conn.close()
return data def insert_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.execute(sql, params)
conn.commit()
cur.close()
return u'插入数据库成功' def insert_many(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor()
cur.executemany(sql, params)
conn.commit()
cur.close()
return u'批量插入数据库成功' def update_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'更新数据库成功' def delete_one(self,sql,params):
conn = MySQLdb.connect(**self.conn)
cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)
ret = cur.execute(sql, params)
conn.commit()
cur.close()
conn.close()
return u'删除数据库成功' class CheckUserInfo(object):
def __init__(self):
self.__helper=MySQLHelper() def checkValid(self,username,password):
sql='select * from userInfo where username=%s and password=%s'
params=(username,password)
return self.__helper.get_one(sql,params) def info():
username=raw_input(u'请输入你的用户名:\n')
password=raw_input(u'请输入你的密码:\n')
userInfo=CheckUserInfo()
result=userInfo.checkValid(username,password)
if not result:
print u'用户名或者密码错误,请联系管理员'
else:
print u'恭喜您,输入正确!' if __name__=='__main__':
info()

Python接口测试之对MySQL的操作(六)的更多相关文章
- Python接口测试之对MySQL/unittest框架/Requests 的操作
单元测试支持测试自动化. 共享的安装程序和关闭代码测试. 聚合成集合,测试和报告框架从测试的独立性.单元测试模块提供可以很容易地支持这些素质的一组测试的类.关于unittest 测试框架建议可以到官方 ...
- python接口测试之mock(二)
上一篇对mock-server已经做了初步的介绍,今天这里继续接着之前的介绍进行,我们先看之前的mock-server部分,之前编写了一个登录的mock,具体json文件见如下的内容: 小王子1110 ...
- Python学习笔记15—mysql的操作
安装 Python-MySQLdb pip install mysql-Python Python对mysql的操作 建立一个实验数据库demo mysql> create database d ...
- python 基础 9.3 mysql 数据操作
#/usr/bin/python #coding=utf-8 #@Time :2017/11/21 0:20 #@Auther :liuzhenchuan #@File :mysql 数据操作 ...
- python接口测试之excel的操作
1 用到的第三方库openpyxl,需要在命令窗口中下载安装pip install openpyxl,主要对xlsx格式的excel进行读取和编辑: xlrd库从excel中读取数据,支持xlsx x ...
- [Python] 学习笔记之MySQL数据库操作
1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- python笔记二(mysql数据库操作)
python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...
- python接口自动化测试框架实现之操作mysq数据库
python操作mysql数据库需要使用到mysqlclient库. 安装:pip install mysqlclient python连接mysql数据库分以下步骤: 1.与mysql建立连接: 2 ...
随机推荐
- mysql主从同步异常原因及恢复
mysql主从同步异常原因及恢复 前言 mysql数据库做主从复制,不仅可以为数据库的数据做实时备份,保证数据的完整性,还能做为读写分离,提升数据库的整体性能.但是,mysql主从复制经常会因为某些原 ...
- 数论+DP HDOJ 4345 Permutation
题目传送门 题意:一个置换群,经过最少k次置换后还原.问给一个N个元素,在所有的置换群里,有多少个不同的k. 分析:这道题可以转化成:N = Σ ai ,求LCM ( ai )有多少个不同的值.比如N ...
- chromedriver与chrome版本对应
今天把手头有的一些关于selenium测试的资源整理了一下,分享出来. 1. 所有版本chrome下载 是不是很难找到老版本的chrome?博主收集了几个下载chrome老版本的网站,其中哪个下载的是 ...
- 关于c头文件的使用的小记录
在用visual studio实现数据结构上的一些结构与算法的时候,想在一个工程中建立几个文件,然后主文件可以使用其他文件的函数与变量(比如定义的结构体还有数据结构接口函数). 我们可以利用头文件来 ...
- 学习笔记 第七章 使用CSS美化超链接
第7章 使用CSS美化超链接 学习重点 认识超链接 熟悉伪类 定义超链接样式 能够灵活设计符合页面风格的链接样式 7.1 定义超链接 在HTML5中建立超链接需要两个要素:设置为超链接的网页元素和 ...
- 详解java基础--抽象类、接口与多态
抽象类.接口.多态都是面向对象中很基础的东西,我相信看到能本篇博客的人本不会再纠结它的基本定义了,本篇文章将尽量的更加深层次的挖掘其内涵,希望能对大家有帮助. 一.抽象类 1.形式 abstract ...
- SQL Server中行列转置方法
PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P ...
- H1B工作签证·绿卡:美国留学的两个关键步骤
月20日在留美学生家长群聚会上的发言稿一.H1B签证系美国最主要的工作签证类别,发放给美国公司雇佣的外国籍有专业技能的员工,属于非移民签证的一种.持有H1B签证者可以在美国工作三年,然后可以再延长三年 ...
- thinkphp5 404 file_put_contents 无法打开流:权限被拒绝
如果你用TP的时间比较长,或者说你比较了解TP的人都会知道,TP的runtime它需要的权限是很大的,如果你只给一般权限肯定是不行的,通常都是给runtime权限:777: linux命令如下: cd ...
- python学习(day2)
1.常用数据类型及内置方法 1.列表(list) 定义:在中括号[]内存放任意多个值,用逗号隔开. 具体函数和内置方法如下: #定义学生列表,可存放多个学生 students=['a','b','c' ...