python应用-操作mysql数据库(python 操作数据库)
itomcoil 2025-03-18 23:11 4 浏览
学习目录
安装Mysql数据库
安装mysql数据库的连接工具
安装pymysql
导入pymysql库连接数据库并操作
关闭数据库
配合with语句实现上下文管理器,数据库语句执行后,自动退出连接
mysql数据库在软件开发或测试环节被大量使用,本章节主要介绍使用python的pymysql库操作mysql数据库,包括查询、创建,更新,删除数据等功能,同时介绍使用with语句实现数据库的上下文管理器功能。
安装Mysql数据库
安装windows操作系统的mysql数据库,在官网下载安装
https://downloads.mysql.com/archives/installer/,注意保存好创建时填写的root密码或者其他用户名和密码,后续连接时需要使用。
或者大家在https://sqlpub.com/#/网站上申请一个免费的数据库空间,申请只需要注册下就可以使用,以下举例的数据库信息就是从该网站上申请的,平常大家也可以用来练手。
安装pymysql
通过pip命令安装pymysql
pip install pymysql -i https://mirrors.aliyun.com/pypi/simple/
导入pymysql库连接数据库
import pymysql
连接数据库,输入参数为用户名,密码,数据库地址,端口,数据库名
db =pymysql.connect(user='testone',
password='RQiUbA66G4G',
host='mysql.sqlpub.com',
port=3306,
database='testsqldata')
#设置数据库游标,数据库操作都是通过游标。
cursor = db.cursor()
通过execute函数执行sql语句
- 创建表
sql = """CREATE TABLE userinfo (
NAME CHAR(20) NOT NULL,
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
#执行sql
cursor.execute(sql)
- 插入数据
#往表中插入10条数据
for i in range(10):
age = 20 + i
sql = """INSERT INTO userinfo(
NAME, AGE, SEX, INCOME)
VALUES ('Lihan', %d, 'M', 2000)""" % age
cursor.execute(sql)
3.查询表数据
sql = """SELECT * FROM userinfo"""
cursor.execute(sql)
- fetchall函数获取所有查询的结果(返回元组)
print(cursor.fetchall())
(('Lihan', 20, 'M', 2000.0), ('Lihan', 21, 'M', 2000.0),
('Lihan', 22, 'M', 2000.0), ('Lihan', 23, 'M', 2000.0),
('Lihan', 24, 'M', 2000.0), ('Lihan', 25, 'M', 2000.0),
('Lihan', 26, 'M', 2000.0), ('Lihan', 27, 'M', 2000.0),
('Lihan', 28, 'M', 2000.0), ('Lihan', 29, 'M', 2000.0))
- fetchone函数每次返回1条数据
比如执行两次打印
print(cursor.fetchone())
print(cursor.fetchone())
打印的结果就是前2条数据
('Lihan', 20, 'M', 2000.0)
('Lihan', 21, 'M', 2000.0)
- fetchmany函数自定义返回多少条的数据
通过传入size参数,表示返回几条数据
print(cursor.fetchmany(size=5))
传入size=5,打印前5条数据
(('Lihan', 20, 'M', 2000.0), ('Lihan', 20, 'M', 2000.0),
('Lihan', 21, 'M', 2000.0), ('Lihan', 22, 'M', 2000.0),
('Lihan', 23, 'M', 2000.0))
关闭数据库
执行完数据库操作后,大家不要忘了关闭数据库连接。
# 关闭数据库连接
db.close()
配合with语句实现上下文管理器,数据库语句执行后,自动退出连接。
为了防止我们写代码时会忘记关闭数据库连接,我们可以配合with语句实现上下文管理器,而pymysql的connect类支持__enter__() 和__exit__()魔法方法,就可以支持上下文管理器。如果不熟悉上下文管理器的可以参考之前的文章(python实现上下文管理器)。
比如将上面插入的数据删掉,写成with语句如下:
db = pymysql.connect(user='testone',
password='RQiUb7Na6G4G',
host='mysql.sqlpub.com',
port=3306,
database='testsqldata')
with db as f:
cursor = f.cursor()
sql = "DELETE FROM userinfo"
cursor.execute(sql)
print('程序已执行完成')
为了方便执行后看结果,我们在源代码中的__exit__()函数加一句priint打印:
程序执行后打印如下:此时可以实现自动关闭数据库连接了
程序已执行完成
程序执行完成后,关闭数据库连接
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,谢谢大家。
相关推荐
- 使用opencv-Python进行图像锐化处理
-
使用OpenCV函数cv::filter2D执行一些拉普拉斯滤波以进行图像锐化使用OpenCV函数cv::distanceTransform以获得二值图像的派生(derived)表示,...
- Python-OpenCV 7. 图像二值化
-
一、介绍图像二值化(ImageBinarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图...
- OpenCV+Python裁剪图像
-
最近使用OpenCV+Python做了一个程序,功能是自动将照片中的文本部分找出来并裁剪/旋转保存为新的图片。这个功能用专业些的说法就是选择并提取感兴趣区域(ROI(RegionofInteres...
- 简单易懂的人脸识别!用PythonOpenCV实现(适合初...
-
前言:OpenCV是一个开源的计算机视觉和机器学习库。它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包。根据这个项目的关于页面,OpenCV已被广泛运用在各种项目上,从谷歌街景...
- OpenCV行人检测应用方案--基于米尔全志T527开发板
-
本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。摘自优秀创作者-小火苗一、软件环境安装1.在全志T527开发板安装OpenCVsudoap...
- 纯Python构建Web应用:Remi与 OpenCV 结合实现图像处理与展示
-
引言大家好,我是ICodeWR。在前几篇文章中,我们介绍了Remi的基础功能、多页面应用、动态更新、与Flask结合、与数据库结合、与Matplotlib结合以及与Pandas结合。...
- 【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程
-
OpenCV是一个广受欢迎且极为流行的计算机视觉库,它因其强大的功能、灵活性和开源特性而在开发者和研究者中备受青睐。学习OpenCV主要就是学习里面的计算机视觉算法。要学习这些算法的原理,知道它们适用...
- Python自动化操控术:PyAutoGUI全场景实战指南
-
一、PyAutoGUI核心武器库解析1.1鼠标操控三剑客importpyautogui#绝对坐标移动(闪电速度)pyautogui.moveTo(100,200,duration=0....
- 从零开始学python爬虫(七):selenium自动化测试框架的介绍
-
本节主要学习selenium自动化测试框架在爬虫中的应用,selenium能够大幅降低爬虫的编写难度,但是也同样会大幅降低爬虫的爬取速度。在逼不得已的情况下我们可以使用selenium进行爬虫的编写。...
- 「干货分享」推荐5个可以让你事半功倍的Python自动化脚本
-
作者:俊欣来源:关于数据分析与可视化相信大家都听说自动化流水线、自动化办公等专业术语,在尽量少的人工干预的情况下,机器就可以根据固定的程序指令来完成任务,大大提高了工作效率。今天小编来为大家介绍几个P...
- python+selenium+pytesseract识别图片验证码
-
一、selenium截取验证码#私信小编01即可获取大量Python学习资源#私信小编01即可获取大量Python学习资源#私信小编01即可获取大量Python学习资源importjso...
- Python爬虫实战 | 利用多线程爬取 LOL 高清壁纸
-
一、背景介绍随着移动端的普及出现了很多的移动APP,应用软件也随之流行起来。最近看到英雄联盟的手游上线了,感觉还行,PC端英雄联盟可谓是爆火的游戏,不知道移动端的英雄联盟前途如何,那今天我们使用到...
- 一套真实的Python面试题,几十个题目汇总
-
1.(1)python下多线程的限制以及多进程中传递参数的方式python多线程有个全局解释器锁(globalinterpreterlock),这个锁的意思是任一时间只能有一个线程使用解释器,跟...
- 一文读透,Python暴力(BF)字符串匹配算法到 KMP 算法之间的变化
-
1.字符串匹配算法所谓字符串匹配算法,简单地说就是在一个目标字符串中查找是否存在另一个模式字符串。如在字符串"ABCDEFG"中查找是否存在“EF”字符串。可以把字符...
- Python实现屏幕自动截图
-
教程目录需要实现的功能:自动屏幕截图具体需求:1.支持设置截图频率和截图文件存储路径2.在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图所需技术(搜索关键词):1.屏幕截...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)