Python如何使用PyMySQL连接数据库

news2025/8/2 17:38:56

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

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

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

2:python连接Mysql的模块安装

        第一种方法:在线安装

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

        第二种方法:离线安装

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

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

3:开始连接MySql

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()

# 使用 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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOX-HSA/HGB/FITC/Glu人血清蛋白/血红蛋白/荧光素/葡萄糖修饰阿霉素

小编今天分享给大家的科研知识是DOX-HSA/HGB/FITC/Glu人血清蛋白/血红蛋白/荧光素/葡萄糖修饰阿霉素,来看! DOX-HSA人血清蛋白偶联阿霉素相关: 采用阿霉素(Doxorubicin,DOX)与人血清白蛋白(HSA)经化学交联获得的偶联物。本品经过滤,溶于PBS…

Chapter4 利用机器学习解决分类和回归问题

目录 4.1 机器学习和神经网络基本概念 4.1.1 感知器 4.1.2 前向传播 4.1.3 反向传播 4.1.4 过拟合和欠拟合 4.2 利用神经网络解决回归问题 4.2.1 问题介绍 4.2.2 利用pytorch解析数据 4.2.2 利用pytorch定义网络结构 4.2.3 开始训练 4.2.4 将模型进行保存 4.3 利用p…

云中马在A股上市:总市值约为40亿元,叶福忠为实际控制人

11月18日,浙江云中马股份有限公司(下称“云中马”,SH:603130)在上海证券交易所主板上市。本次上市,云中马的发行价为19.72元/股,发行数量为3500万股,募资总额约为6.90亿元,募资金额约…

码农必备?清华大学开源了一款写代码神器。。。

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 提升程序员编码效率,是一个经久不衰的话题,从最初用纯文本编辑器到后来代码自动补全,再到后来基于AI智能补全代码,开发者效率的确在不断提升。 关于新工…

这就是程序员眼中的函数吗?(一)

小叮当的任意门1. 函数是什么?2. C语言中的函数分类1. 库函数2. 自定义函数3. 函数的参数1. 实际参数(实参)2. 形式参数(形参)4. 函数的调用1. 传值调用2. 传址调用练习1. 写一个函数可以判断一个数是不是素数三级标题…

5分钟实现「视频检索」:基于内容理解,无需任何标签

Notebook 教程:text-video retrieval 「视频检索」任务就是输入一段文本,检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆,网络上视频的数量呈现井喷式增长,「视频检索」成为人们高效查找视频的一项新需求。传统的视频…

Matlab点云处理及可视化第1期—基于KD树的邻域点搜索(柱状邻域、球状邻域及KNN)

目录 1 概述 2 代码实现 3 可视化验证 数据及完整代码获取方式: 观前提示:本文文字内容请勿直接用于论文写作,否则后果自负。 特别提示:《Matlab点云处理及可视化》系列文章旨在为初入点云处理领域的朋友提供一份较为权威、可…

MR直播(混合现实直播)做一场高品质企业培训

阿酷TONY / 2022-11-18 / 长沙 MR,是英文Mixed Reality两个单词的缩写,中文翻译为混合现实。 MR混合现实直播技术是通过在现实环境中引入虚拟场景信息,增强用户体验的真实感,具有真实性、实时互动性等特点。 MR直播解决方案是深…

基于springboot农产品交易平台的设计与实现

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于特色农产品电商平台 当然也不能排除在外,随着网络技术的不断成熟,带动了特色农产品电商平台,它彻底…

软件需求分析——需求的理论基础

如果有兴趣了解更多相关内容,可以来我的个人网站看看:瞳孔空间 一:需求的涵义 研究对象:软件加强型系统中的软件 软件加强型系统:泛指由计算机技术支持的互相联系着的一组人类活动组成的系统。与物理设备和人类社会…

linux网络协议栈源码分析 - 传输层(TCP的输出)

1、TCP write系统调用(tcp_sendmsg) 1.1、write系统调用 socket的write系统调用栈: write最终调用tcp_sendmsg发送消息。 1.2、tcp_sendmsg报文分段 tcp_sendmsg主要是对用户的消息按MSS进行分段、添加到发送队列并将用户数据拷贝到分段里面,根据相关判断设置PSH标…

[附源码]SSM计算机毕业设计超市收银系统论文JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

学生台灯是灯管的好还是led的好?分享学生专用台灯第一品牌

给学生使用的话肯定是led灯更好的,主要是对眼睛有保护作用的,灯管一般当做主要照明灯具是可以的,在家中客厅里,卧室就是灯管,使用led灯是想要补足亮度的,全光谱的国AA级台灯,更健康、更适应人类…

计算机网络---ARP、DHCP与ICMP

(一)IP 地址与硬件地址 IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部&…

并肩刘德华,对战周杰伦,腾格尔老师线上演唱会即将拉开帷幕

在刚刚结束的第三十五届金鸡奖上面,著名爱国艺人刘德华,又一次出现在大众的视野当中。来自香港的天王刘德华,是一个著名的音乐人和演员,他拳拳的爱国之情,也感动了无数的粉丝。 刘德华作为中国华语乐坛的中坚力量&…

22071班(11月18日)

1.在串口工具进行输入: echo 1 > /dev/myled0 ---->led1灯点亮 echo 0 > /dev/myled0 ---->led1灯熄灭 echo 1 > /dev/myled1 ---->led1灯点亮 echo 0 > /dev/myled1 ---->led1灯熄灭 echo 1 > /dev/myled2 ----…

【附源码】计算机毕业设计JAVA校园跑腿平台

【附源码】计算机毕业设计JAVA校园跑腿平台 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybati…

什么是PaaS平台

PaaS平台概述 PaaS平台通常是基于IaaS平台构建的,PaaS平台和IaaS平台最大的差别是需求即服务。所有的管理都是以服务为粒度的,在IaaS以资源管理为中心的平台上提供了更高层次的抽象。 PaaS的本质 (1)运维自动化,故障…

统计聚类法的基本步骤:

统计聚类法的基本步骤: 1>形成数据框 2>计算距离阵 计算n个样品两两间的距离D。 3>进行系统聚类 (I)构造n个类,每个类只包含一个样品; (2)合并距离最近的两类为一新类; (3)计算新类与当前各类的距离,若类个数为1,…

观测云产品更新|Pipeline 使用体验优化;支持写入用户的自定义事件;自定义查看器支持选择更多类型的数据等

观测云更新 Pipeline 使用体验优化 Pipeline 支持过滤条件配置多选 支持将任意一个 Pipeline 脚本设置为“默认 Pipeline 脚本“,若当前数据类型在匹配 Pipeline 处理的时候,未匹配到其他的 Pipeline 脚本,则数据会按照默认 Pipeline 脚本的…