前言

做自动化测试的时候,注册了一个新用户,产生了多余的数据,下次用同一账号就无法注册了,这种情况该怎么办呢?

自动化测试都有个数据准备和数据清理的操作,如果因为此用例产生了多余的数据,就需要数据清理,可以用python连接mysql直接删除多余的数据就可以了。

那么python3如何连接mysql呢?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

环境准备:

python3.6

PyMySQL 0.9.2

环境准备

使用pip安装PyMySQL

pip install PyMySQL

先使用第三方工具连接mysql数据库,比如navicat连接mysql,参考这篇https://www.cnblogs.com/yoyoketang/p/9994078.html

如下图连接测试通过,那么连接数据库至少应该知道这些信息,用户名和密码是授权远程客户端的用户名和密码,授权相关参考这篇https://www.cnblogs.com/yoyoketang/p/10268896.html

连接名: 自己定义,这个无所谓

主机名或ip地址:mysql服务的ip地址

端口:3306 (端口号,默认一般是3306)

用户名:root (授权远程登录的用户名)

密码:123456 (授权远程登录的密码)

查询操作

如果新建了一个test数据库,里面有一张user表,有name和psw两个字段,使用sql查询结果如下

select name,psw from user

接下来使用python转换成对应的代码查询

import pymysql

# 打开数据库连接
db = pymysql.connect(host='47.104.x.x',
port=3306,
user='root',
passwd='123456',
db='test') # 使用 cursor() 方法创建一个游标对象cur
cur = db.cursor() # 使用 execute() 方法执行 SQL 查询
cur.execute("select name, psw from user") # 使用 fetchall() 方法获取查询结果
data = cur.fetchall() print(data) # 关闭数据库连接
db.close()

运行结果:

(('yoyo_1', '111111'), ('yoyo', '123456'), ('yoyo_2', '111111'), ('yoyo_3', '222222'), ('yoyo_4', '444444'))

如果想查询结果以字典格式输出,可以用db.cursor(cursor=pymysql.cursors.DictCursor)推荐!!!

有时候我们只想查询某个字段对应的值,比如查询yoyo_1账号对应的psw值,并且取出来

select psw from user where name='yoyo_1'

查询的结果是(('111111',),) 元组嵌套元组,取值的话用下标取出来就可以了

import pymysql

def select_db(sql):
'''查询数据库'''
# 打开数据库连接
db = pymysql.connect(host='47.104.x.x',
port=3306,
user='root',
passwd='123456',
db='test') # 使用 cursor() 方法创建一个游标对象cur
cur = db.cursor() # 使用 execute() 方法执行 SQL 查询
cur.execute(sql) # 使用 fetchall() 方法获取查询结果
data = cur.fetchall()
# print(data) # 取出对应的psw值 # 关闭数据库连接
db.close()
return data if __name__ == "__main__":
sql = "select psw from user where name='yoyo_3'"
a = select_db(sql)[0][0]
print("查询结果:%s" %str(a))

删除操作

使用python删除一条数据,比如我要删除yoyo_1这条记录

delete from user where name='yoyo_1'

import pymysql

def delete_db(sql_delete):
'''删除操作'''
# 打开数据库连接
db = pymysql.connect(host='47.104.x.x',
port=3306,
user='root',
passwd='123456',
db='test') # 使用cursor()方法获取操作游标
cur = db.cursor() try:
cur.execute(sql_delete) # 执行
# 提交
db.commit()
except Exception as e:
print("操作异常:%s" % str(e))
# 错误回滚
db.rollback()
finally:
db.close() if __name__ == '__main__':
sql_delete ="delete from user where name='yoyo_1' "
delete_db(sql_delete)

更新操作

更新name用户名是yoyo的用户,把psw改成666666

update user set psw='666666' where name='yoyo'

import pymysql

def update_db(sql_update):
'''3.更新操作'''
db = pymysql.connect(host='47.104.x.x',
port=3306,
user='root',
passwd='123456',
db='test') # 使用cursor()方法获取操作游标
cur = db.cursor() try:
cur.execute(sql_update) # 执行sql
# 提交
db.commit()
except Exception as e:
# 错误回滚
print("错误信息:%s" % str(e))
db.rollback()
finally:
db.close() if __name__ == '__main__':
sql_update ="update user set psw='666666' where name='yoyo'"
update_db(sql_update)

新增数据

往数据库里面插入一条数据,比如在user表里面新增一个用户信息yoyo_10,123456

insert into user(id, name, psw) values(10, 'yoyo_10', '123456')

import pymysql

def insert_db(sql_insert):
'''插入操作'''
db = pymysql.connect(host='47.104.x.x',
port=3306,
user='root',
passwd='123456',
db='test')
# 使用cursor()方法获取操作游标
cur = db.cursor() try:
cur.execute(sql_insert)
# 提交
db.commit()
except Exception as e:
print("错误信息:%s" % str(e))
# 错误回滚
db.rollback()
finally:
db.close() if __name__ == "__main__":
sql_insert = "insert into user(id, name, psw) values(10, 'yoyo_10', '123456')"
insert_db(sql_insert)

从上面的代码可以看出,除了查询的代码不一样,新增、删除、更新数据库操作代码都一样,只是执行的sql不一样

python自动化交流 QQ群:779429633

python笔记33-python3连mysql增删改查的更多相关文章

  1. Django 笔记(六)mysql增删改查

    注:增删改查表数据在 views.py 内 添加表数据: 删表数据:  改表数据:  查表数据: 常用的查询方法: 常用的查询条件: 相当于SQL语句中的where语句后面的条件 语法:字段名__规则

  2. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  4. python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查

    python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...

  5. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  6. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  7. mysql增删改查相关操作

    mysql增删改查相关操作 以前用mysql用的少,对于数据库相关的操作不熟悉,现在开始要接触数据库了,记录一下相关的基础操作吧. 1.数据库的授权操作 # mysql -u root -p Ente ...

  8. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

  9. MySQL增删改查的常用语句汇总

    MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...

  10. python之路day05--字典的增删改查,嵌套

    字典dic 数据类型划分:可变数据类型,不可变数据类型 不可变数据类型:元组,bool,int str -->可哈希可变数据类型:list,dict,set --> 不可哈希 dict k ...

随机推荐

  1. LeetCode(11):盛最多水的容器

    Medium! 题目描述: 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, ...

  2. 实操一下<python cookbook>第三版1

    这几天没写代码, 练一下代码. 找的书是<python cookbook>第三版的电子书. *这个操作符,运用得好,确实少很多代码,且清晰易懂. p = (4, 5) x, y = p p ...

  3. Codeforces Round #378 (Div. 2) F - Drivers Dissatisfaction

    F - Drivers Dissatisfaction 题目大意:给你n个点,m条边,每个边都有一个权重w,每条边也有一个c表示,消耗c元可以把这条边的权重减1,求最多消耗s元的最小生成树. 思路:因 ...

  4. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  5. wdatepicker默认时间为当前时间

    $(document).ready(function() { alert(today()); document.getElementById("serviceTime").valu ...

  6. cv2 与 matplotlib 的 Bug 记录

    cv2 的 imread 无法读取中文路径 解决方案: img = cv2.imdecode(np.fromfile(image_path,dtype=np.uint8),cv2.IMREAD_COL ...

  7. javascript编写带阴历的黄历

    最近在做一个黄历的快应用(quickapp),需要涉及到公历转阴历,效果如下: 快应用(https://www.quickapp.cn/): 快应用是基于手机硬件平台的新型应用形态:标准是由主流手机厂 ...

  8. css基础之line-height

    什么是line-height(行高)?line-height设置1.5和150%有什么区别?这是一个比较常见的css面试题,带着这个问题往下看.所谓行高是指一段文字中某一行的高度吗?具体来说不是.w3 ...

  9. ip后面带端口号如何做域名解析

    最近自己购买了个云服务器(阿里)和域名(腾讯,需要备案,相对比较麻烦),放上自己的工程,通过如下配置 服务器设置: 域名设置: 这样就可以通过默认的域名解析可以通过外网来访问自己的服务. 当然在内网的 ...

  10. Linux与Windows远程互访(使用Rdesktop与SSH)

    工作的时候经常使用Redhat系列系统,而平常娱乐文档都是在windows平台上进行.因此实现linux与windows远程互访也是很有必要的事情. 本文将介绍如何实现Linux与Windows的远程 ...