Python如何使用PyMySQL连接数据库

1:为什么要连接数据库呢?

        做接口自动化测试的时候,我们需要校验数据是否正常入库,数据是否正确,来做断言处理;有的时候需要修改数据,去执行其他场景的测试用例;有的时候需要删除数据,从而实现同一个数据多次使用。

        例如:注册了一个新用户,产生了多余的数据,下次同一个账号就无法注册了,这种情况怎么办呢?自动化测试都有数据准备和数据清理的操作,如果因此用例产生了多余数据,就需要清理数据,可以用Pyhthon连接Mysql直接删除多余的数据就可以了。

2:python连接Mysql的模块安装

        第一种方法:在线安装

        在Pycharm---点击--Terminal---输入pip install PyMySQL等待完装完毕即可,如图所示

Python如何使用PyMySQL连接数据库_第1张图片

        第二种方法:离线安装

        有时候在线安装第三方模块的时,会因为网络原因总是装不上,那怎么办呢?那就手动安装

        参考这个网址:python——pymysql的安装 - 走看看

3:开始连接MySql

        创建游标,使数据以字典的形式返回

        # 使用 cursor() 方法创建一个游标对象 cursor,默认返回元素数据类型
        cursor = db.cursor()
        # 添加cursor参数,指定返回字典数据类型
        cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

import pymysql

# 打开数据库连接
db = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="123456", database="user_test")
"""
    host:地址,你的数据库地址
    port:端口号
    user:用户名
    password:密码
    database:要操作的数据库
"""
# 使用 cursor() 方法创建一个游标对象 cursor,默认返回元素数据类型
cursor = db.cursor()
# 添加cursor参数,指定返回字典数据类型
cursor = db.cursor(cursor=pymysql.cursors.DictCursor)

# 使用 execute()  方法执行 SQL 查询
cursor.execute("select * from studys")
​
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

# 输出data数据
print(data)

# 关闭数据库连接
db.close()

4:查询数据

        写查询语句,查询一行数据,查询多行数据

语法:

select 列名称 from 表名称 [查询条件]

# 查询表里所有内容

select * from studys

例如要查询 students 表中所有学生的名字和年龄, 输入语句

select name, age from studys

fetchone()获取一行数据

fetchall()获取所有数据

        查询一行语句

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute()方法执行 SQL 查询
# 通配符 *,意思是查询表里所有内容
cursor.execute("select * from user")

# 使用 fetchone() 方法获取一行数据.
data = cursor.fetchone()
print(data)
 
# 关闭数据库连接
db.close()

         运行结果:是以元组的形式返回的 

        查询多行语句

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute()方法执行 SQL 查询
# 通配符 *,意思是查询表里所有内容
cursor.execute("select * from user")

# 使用 fetchall() 方法获取查询出的所有数据.
data = cursor.fetchall()
print(data)
 
# 关闭数据库连接
db.close()

        运行结果:以元组的形式返回

5:增加数据

        需要使用db.commit(),提交到数据库执行

        语法:

        insert 语句可以用来将一行或多行数据插到数据库表中, 使用的一般形式如下:

        insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

        其中 [ ] 内的内容是可选的, 例如, 要给user_test数据库中的 user 表插入一条记录, 执行语句:

        insert into studys values(3, '小明');

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute()方法执行sql语句
cursor.execute("insert into user (id,name) values (3,'小明')")

# 使用commit()方法,提交到数据库执行
db.commit()

# 可以再执行查询语句,看数据是否插入成功
cursor.execute("select * from user where id ='3' and name = '小明'")

# # 使用fetchone()方法获取单条数据
data = cursor.fetchone()
print(data)
 
# 关闭数据库连接
db.close()

        再次运行上面的代码,运行后报错,有两个错误信息

        1:错误再哪一行

        2: 下面这个错误原因是,主键冲突

        在插入数据的时候,可能会出现主键冲突,为防止插入数据时,抛出异常,所以加上try...except

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 将sql语句赋值给一个变量
insert_sql = "insert into user (id,name) values (3,'小明')"

try:
    # 使用 execute()方法执行sql语句
    cursor.execute(insert_sql)

    # 使用commit()方法,提交到数据库执行
    db.commit()

    # 可以再执行查询语句,看数据是否插入成功
    cursor.execute("select * from user where id ='3' and name = '小明'")

    # 使用fetchone()方法获取单条数据
    data = cursor.fetchone()
    print(data)
except:
    print("数据插入失败,请查检sql语句")
    # 想知道报了什么错,可以抛个异常
    raise
 
# 关闭数据库连接
db.close()

6:修改数据

        需要使用db.commit(),提交到数据库执行

        语法:update 表名称 set 列名称=新值 where 更新条件;

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 将sql语句赋值给一个变量
update_sql = "update user set name='小小名' where id =3"

try:
    # 使用 execute()方法执行sql语句
    cursor.execute(insert_sql)

    # 使用commit()方法,提交到数据库执行
    db.commit()

    # 可以再执行查询语句,看数据是否修改成功
    cursor.execute("select * from user where id ='3'")

    # 使用fetchone()方法获取单条数据
    data = cursor.fetchone()
    print(data)
except:
    print("数据修改失败,请查检sql语句")
    # 发生错误,回滚
    db.rollback()
    # 想知道报了什么错,可以抛个异常
    raise
 
# 关闭数据库连接
db.close()

7:删除数据

        需要使用db.commit(),提交到数据库执行

        语法:delete from 表名称 where 删除条件;

# 导入模块
import pymysql

# 打开数据库连接
db = pymysql.connect("127.0.0.1", "root", "123456", "user_test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 将sql语句赋值给一个变量
update_sql = "delete from user where id =3"

try:
    # 使用 execute()方法执行sql语句
    cursor.execute(insert_sql)

    # 使用commit()方法,提交到数据库执行
    db.commit()

    # 可以再执行查询语句,看数据是否删除成功
    cursor.execute("select * from user)

    # 使用fetchone()方法获取单条数据
    data = cursor.fetchone()
    print(data)
except:
    print("数据修改失败,请查检sql语句")
    # 发生错误,回滚
    db.rollback()
    # 想知道报了什么错,可以抛个异常
    raise
 
# 关闭数据库连接
db.close()

你可能感兴趣的:(python接口自动化测试,python,mysql)