当前位置: 首页 > news >正文

Python操作MySQL基础

        除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库: pymysql来完成对MySQL数据库的操作。

安装第三方库pymysql

使用命令行,进入cmd,输入命令pip  install  pymysql.

创建到MySQL的数据库连接 

这里的8.0.36是MySQL的版本。

 使用python执行非查询性质的SQL语句

 代码块:

 执行前数据库

执行后数据库 

 使用python执行查询性质的SQL语句 

from pymysql import Connection   # 导包# 构建到MySQL数据库的连接
coon = Connection(host="localhost",   # 主机名(IP)port=3306,          # 端口(默认端口是3306)user="root",        # 账户password="123456"   # 密码
)# 执行非查询性质SQL
cursor = coon.cursor()    # 获取到游标对象
# 选择数据库
coon.select_db("mydb1")
# 执行SQL
cursor.execute("select * from product")
result = cursor.fetchall()
for r in result:print(r)# 关闭连接
coon.close()

运行效果 

数据库里面的数据

向MySQL中插入数据 

from pymysql import Connection   # 导包# 构建到MySQL数据库的连接
coon = Connection(host="localhost",   # 主机名(IP)port=3306,          # 端口(默认端口是3306)user="root",        # 账户password="123456"   # 密码
)# 执行非查询性质SQL
cursor = coon.cursor()    # 获取到游标对象
# 选择数据库
coon.select_db("mybase")
# 执行SQL
cursor.execute("insert into student values(8,'李华','男',99,96,95)")
# 确认提交
coon.commit()
# 关闭连接
coon.close()

运行代码前

运行代码后的效果

        如果不想要每次手动通过commit语句提交数据,我们可以设置自动提交,如下:

coon = Connection(host="localhost",   # 主机名(IP)port=3306,          # 端口(默认端口是3306)user="root",        # 账户password="123456",   # 密码autocommit=True      # 设置为自动提交
)

【综合案例】

 我们将前面提到的销售额的数据全部导入MySQL中,数据来源在前面的博客中提到过:http://t.csdnimg.cn/96mXK

一.创建数据库,创建表

二.读取数据类的设计

 读取数据的代码设计我们沿用前面的面向对象的设计的代码:http://t.csdnimg.cn/96mXK

data_define
"""数据定义的类
"""
class Record:def __init__(self,data,order_id,money,province):self.data = data              # 订单日期self.order_id = order_id      # 订单idself.money = money            # 订单金额self.province = province      # 销售省份def __str__(self):return f"{self.data},{self.order_id},{self.money},{self.province}"file_define
"""和文件相关的定义
"""
from data_define import *
import json
# 先定义一个抽象类用来做顶层设计,确定有那些需要实现的功能
class FileReader:def read_data(self) -> list[Record]:"""读取文件的数据,读到的每一条数据都转换为Order对象,将他们封装到list内返回即可:return:"""pass   # 抽象方法class TextFileReader(FileReader):  # 用来读取普通文件数据的方法def __init__(self,path):self.path = path        # 定义成员变量记录文件路径# 复写(实现抽象方法)父类的方法def read_data(self) -> list[Record]:f = open(self.path,"r",encoding="UTF-8")record_list:list[Record] = []for line in f.readlines():   # readlines()一次性读取文件的每一行内容返回的是列表line = line.strip()      # 消除读取到的每一行的换行符data_list = line.split(",")record = Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])  # 构建为Order对象record_list.append(record)f.close()return record_listclass JsonFileReader(FileReader):   # 用来读取JSON文件数据的方法def __init__(self,path):self.path = pathdef read_data(self) -> list[Record]:f = open(self.path,"r",encoding="UTF-8")record_list:list[Record] = []for line in f.readlines():   # readlines()一次性读取文件的每一行内容返回的是列表data_dict = json.loads(line)record = Record(data_dict['date'],data_dict['order_id'],data_dict['money'],data_dict['province'],)  # 构建为Order对象record_list.append(record)f.close()return record_listif __name__ == '__main__':text_file_reader = TextFileReader("D:/网盘下载的文件/2011年1月销售数据.txt")jison_file_reader = JsonFileReader("D:/网盘下载的文件/2011年2月销售数据JSON.txt")list1 = text_file_reader.read_data()list2 = jison_file_reader.read_data()for l1 in list1:print(l1)for l2 in list2:print(l2)

 三.读取数据插入到数据库MySQL

"""1.设计一个类,可以完成数据封装2.设计一个抽象类,定义文件读取的相关功能,并使用子类实现具体功能3.读取文件,生产数据对象4.进行数据需求的逻辑计算(计算每一天的销售额)5.插入到MySQL
"""
#  导包
from file_define import *
from data_define import *
from pymysql import Connection
#  创建文件对象获取文件
text_file_reader = TextFileReader("D:/网盘下载的文件/2011年1月销售数据.txt")
jison_file_reader = JsonFileReader("D:/网盘下载的文件/2011年2月销售数据JSON.txt")jen_data:list[Record] = text_file_reader.read_data()  # 一月份的数据
feb_data:list[Record] = jison_file_reader.read_data()  # 二月份的数据# 将两个月份的数据合并
all_data:list[Record] = jen_data+feb_dataconn = Connection(host="localhost",port=3306,user="root",passwd="123456",autocommit=True
)
# 获取游标对象
cursor=conn.cursor()
# 选择数据库
conn.select_db("py_sql")
# 组织SQL语句
for record in all_data:sql=f"insert into orders values('{record.data}','{record.order_id}',{record.money},'{record.province}')"# 执行SQL语句cursor.execute(sql)
# 关闭连接
conn.close()

运行效果

相关文章:

Python操作MySQL基础

除了使用图形化工具以外,我们也可以使用编程语言来执行SQL从而操作数据库。在Python中,使用第三方库: pymysql来完成对MySQL数据库的操作。 安装第三方库pymysql 使用命令行,进入cmd,输入命令pip install pymysql. 创建到MySQL的数据库连接…...

【数学建模】【2024年】【第40届】【MCM/ICM】【E题 财产保险的可持续性】【解题思路】

一、题目 (一) 赛题原文 2024 ICM Problem E: Sustainability of Property Insurance Extreme-weather events are becoming a crisis for property owners and insurers. The world has endured “more than $1 trillion in damages from more than …...

SpringCloud--Eureka注册中心服务搭建注册以及服务发现

注意springboot以及springcloud版本&#xff0c;可能有莫名其妙的错误&#xff0c;这里使用的是springboot-2.6.13&#xff0c;springcloud-2021.0.5 一&#xff0c;Eureka-Server搭建&#xff1a; 1.创建项目&#xff1a;引入依赖 <dependency><groupId>org.sp…...

ansible shell模块 可以用来使用shell 命令 支持管道符 shell 模块和 command 模块的区别

这里写目录标题 说明shell模块用法shell 模块和 command 模块的区别 说明 shell模块可以在远程主机上调用shell解释器运行命令&#xff0c;支持shell的各种功能&#xff0c;例如管道等 shell模块用法 ansible slave -m shell -a cat /etc/passwd | grep root # 可以使用管道…...

qss的使用

参考&#xff1a;qss样式表笔记大全(二)&#xff1a;可设置样式的窗口部件列表&#xff08;上&#xff09;&#xff08;持续更新示例&#xff09;_51CTO博客_qss样式...

archlinux 使用 electron-ssr 代理 socks5

提前下载好 pacman 包 https://github.com/shadowsocksrr/electron-ssr/releases/download/v0.2.7/electron-ssr-0.2.7.pacman 首先要有 yay 和 aur 源&#xff0c;这个可以参考我之前的博客 虚拟机内使用 archinstall 安装 arch linux 2024.01.01 安装依赖 yay 安装的&#…...

macos安装local模式spark

文章目录 配置说明安装hadoop安装Spark测试安装成功 配置说明 Scala - 3.18 Spark - 3.5.0 Hadoop - 3.3.6 安装hadoop 从这里下载相应版本的hadoop下载后解压&#xff0c;配置系统环境变量 > sudo vim /etc/profile添加以下两行 export HADOOP_HOME/Users/collinsliu/…...

机器学习算法之支持向量机(SVM)

SVM恐怕大家即使不熟悉&#xff0c;也听说过这个大名吧&#xff0c;这一节我们就介绍这相爱相杀一段内容。 前言&#xff1a;在介绍一个新内容之SVM前&#xff0c;我们不觉映入眼帘的问题是为什么要引入SVM&#xff1f;吃的香&#xff0c;睡的着的情况下&#xff0c;肯定不会是…...

线性判别分析(LDA)

一、说明 LDA 是一种监督降维和分类技术。其主要目的是查找最能分隔数据集中两个或多个类的特征的线性组合。LDA 的主要目标是找到一个较低维度的子空间&#xff0c;该子空间可以最大限度地区分不同类别&#xff0c;同时保留与歧视相关的信息。 LDA 是受监督的&#xff0c;这意…...

Vue 前置导航

Vue 前置导航&#xff08;Vue Front Navigation&#xff09;是一种在 Vue.js 框架中实现导航功能的常见方式。它通常用于构建单页应用程序&#xff08;Single Page Application&#xff09;&#xff0c;通过在页面顶部或侧边栏显示导航菜单&#xff0c;使用户能够轻松切换到不同…...

串行通信,并行通信,波特率,全双工,半双工,单工等通信概念

串行通信&#xff1a; 只使用一根线来进行数据发送或者是接收&#xff0c;串行通信传输数据是一位一位进行传输 并行通信&#xff1a; 使用多跟线进行数据的发送和接收&#xff0c;并行通信可以一次传输多个数据位 波特率&#xff1a; 每秒传输数据的位数&#xff0c;决定…...

鸿蒙系统进一步学习(一):学习资料总结,少走弯路

随着鸿蒙Next的计划越来越近&#xff0c;笔者之前的鸿蒙系统扫盲系列中&#xff0c;有很多朋友给我留言&#xff0c;不同的角度的问了一些问题&#xff0c;我明显感觉到一点&#xff0c;那就是许多人参与鸿蒙开发&#xff0c;但是又不知道从哪里下手&#xff0c;因为资料太多&a…...

异步复位同步释放原则

复位信号有一个非常重要的原则&#xff0c;叫作异步复位同步释放原则。异步复位指一个寄存器的复位信号随时可以复位&#xff0c;不必考虑该寄存器的时钟信号正处在哪个相位上。同步释放是指一个寄存器的复位信号从复位态回到释放态的时机&#xff0c;必须与该寄存器的时钟信号…...

M1 Mac使用SquareLine-Studio进行LVGL开发

背景 使用Gui-Guider开发遇到一些问题&#xff0c;比如组件不全。使用LVGL官方的设计软件开发 延续上一篇使用的基本环境。 LVGL项目 新建项目 选择Arduino的项目&#xff0c;设定好分辨率及颜色。 设计UI 导出代码 Export -> Create Template Project 导出文件如图…...

web3知识体系汇总

web3.0知识体系 1.行业发展 2. web3的特点&#xff1a; 1、统一身份认证系统 2、数据确权与授权 3、隐私保护与抗审查 4、去中心化运行 Web3.0思维技术思维✖金融思维✖社群思维✖产业思维”&#xff0c;才能从容理解未来Web3.0时代的大趋势。 3.技术栈 Web3.jsSolidit…...

服务器与电脑的区别?

目录 一、什么是服务器 二、什么是电脑 三、服务器和电脑的区别 一、什么是服务器 服务器是指一种专门提供计算和存储资源、运行特定软件服务的物理或虚拟计算机。服务器主要用于接受和处理来自客户端&#xff08;如个人电脑、手机等&#xff09;的请求&#xff0c;并向客户…...

结束 代码随想录 链表章节(下一张

环形链表II 首先&#xff0c;先判断有没有环&#xff0c;像物理相对速度一样 只要 相对速度为1 那么快指针绝对会在环里追上慢指针&#xff0c;最后x 和z 的距离其实最后两个index总会相遇&#xff0c;相遇的点就是入口 class Solution { public:ListNode *detectCycle(List…...

re:从0开始的CSS学习之路 6. 字体相关属性

1. 字体相关属性 font-size 字体大小 font-family 字体的系列&#xff08;字体簇&#xff09; 可以设置多个字体&#xff0c;每个字体之间以逗号隔开 设置多个字体的目的是为了用户尽可能的支持字体 网页字体的五大类&#xff1a; serif 衬线字体 sans-serif 非衬线字体 monos…...

FPGA(基于xilinx)中PCIe介绍以及IP核XDMA的使用

Xilinx中PCIe简介以及IP核XDMA的使用 例如&#xff1a;第一章 PCIe简介以及IP核的使用 文章目录 Xilinx中PCIe简介以及IP核XDMA的使用一、PCIe总线概述1.PCIe 总线架构2.PCIe 不同版本的性能指标及带宽计算3.PCIe 接口信号 二、XDMA1.XDMA 与其它 PCIe IP 的区别2.XDMA简介 三…...

docker 运行jar包 指定配置文件

要在Docker中运行JAR包并指定配置文件&#xff0c;你可以创建一个Dockerfile来定义你的容器环境&#xff0c;并在其中指定如何运行JAR包和配置文件。下面是一个简单的例子&#xff0c;展示了如何在Dockerfile中设置这些配置&#xff1a; 第一步&#xff1a;创建 Dockerfile文件…...

深入解析FOC控制中的Clark/Park变换及其Matplotlib动态仿真实现

1. 从三相交流电到FOC控制的基础认知 第一次接触电机控制时&#xff0c;看到那些复杂的坐标变换公式确实让人头疼。但后来我发现&#xff0c;理解FOC&#xff08;磁场定向控制&#xff09;的核心&#xff0c;关键在于抓住两个关键点&#xff1a;为什么要做坐标变换和变换后能解…...

FastAPI API版本控制:URI前缀的终极实现指南

FastAPI API版本控制&#xff1a;URI前缀的终极实现指南 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI是一个高性能、易于学习…...

GemPy:让三维地质建模从复杂算法变成简单Python代码

GemPy&#xff1a;让三维地质建模从复杂算法变成简单Python代码 【免费下载链接】gempy GemPy is an open-source, Python-based 3-D structural geological modeling software, which allows the implicit (i.e. automatic) creation of complex geological models from inter…...

OpenClaw超轻量方案:nanobot镜像对接QQ机器人全流程

OpenClaw超轻量方案&#xff1a;nanobot镜像对接QQ机器人全流程 1. 为什么选择nanobot镜像 去年夏天&#xff0c;我在尝试将OpenClaw接入QQ机器人时遇到了不少麻烦。当时需要分别部署模型服务、配置OpenClaw网关、调试QQ机器人接口&#xff0c;整个过程耗费了整整三天时间。直…...

GLM-OCR性能基准测试报告:对比不同GPU型号上的推理速度与成本

GLM-OCR性能基准测试报告&#xff1a;对比不同GPU型号上的推理速度与成本 最近在做一个文档数字化的项目&#xff0c;需要处理大量扫描件和图片里的文字。选型的时候&#xff0c;自然就盯上了各种OCR模型。GLM-OCR作为国产大模型阵营里的一员&#xff0c;表现一直挺亮眼&#…...

技术赋能B端拓客:号码核验行业的破局与价值深耕,氪迹科技法人股东核验筛选系统,阶梯式价格

2026年&#xff0c;B端市场进入存量竞争的深水区&#xff0c;“精准获客、降本增效”不再是企业的加分项&#xff0c;而是生存发展的必选项。号码核验作为B端拓客流程的前置筛选环节&#xff0c;直接决定了线索质量、人力效能与投入回报比&#xff0c;成为影响企业拓客竞争力的…...

Loop:重新定义macOS窗口管理的艺术与科学

Loop&#xff1a;重新定义macOS窗口管理的艺术与科学 【免费下载链接】Loop MacOS窗口管理 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 在数字工作空间中&#xff0c;窗口管理不再是简单的排列组合&#xff0c;而是一种提升专注力与创造力的空间艺术。Loop…...

如何将闲置Globe键重构为效率引擎?Karabiner-Elements自定义修饰键全指南

如何将闲置Globe键重构为效率引擎&#xff1f;Karabiner-Elements自定义修饰键全指南 【免费下载链接】Karabiner-Elements Karabiner-Elements is a powerful utility for keyboard customization on macOS Sierra (10.12) or later. 项目地址: https://gitcode.com/gh_mirr…...

Apollo配置中心:从基础概念到实战应用全解析

1. Apollo配置中心初探&#xff1a;为什么我们需要它&#xff1f; 想象一下你正在开发一个电商系统&#xff0c;数据库连接地址、支付接口密钥、商品库存阈值等配置信息散落在20个不同的properties文件里。每次修改配置都需要重新打包部署&#xff0c;半夜三点被叫起来改生产环…...

【仅限前500名工程师】Python智能内存管理高阶训练营核心讲义:17个真实OOM案例、8种定制化GC策略、1份可审计内存SLA模板

第一章&#xff1a;Python智能体内存管理策略最佳实践Python智能体&#xff08;如基于LLM的Agent、ReAct架构或Tool-Calling系统&#xff09;在长期运行中易因对象滞留、缓存膨胀和闭包引用导致内存持续增长。高效内存管理不仅关乎稳定性&#xff0c;更直接影响推理延迟与并发吞…...