当前位置: 首页 > 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文件…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...