【全栈开发】----用pymysql库连接MySQL,批量存入

本文基于前面的MySQL基础语句使用,还不会的宝子可以先回去看看:

全栈开发----Mysql基本配置与使用-CSDN博客

        仅仅用控制台命令对数据库进行操作,虽然大部分操作都很简单,但对于大量数据的存入,存储数据将会变得很繁琐,有没有什么简单点的方式呢?有的有的,python的pymysql库就能做到,通过python程序,实现对数据库的批量操作,在日常使用中也很常见。

目录

一、pymysql基本介绍

二、pymysql基本操作

1、下载pymysql库

2、创建SQL环境

3、使用pymysql对SQL进行增删改查

增加数据

查找数据

删除数据

修改数据

三、项目实例

一、pymysql基本介绍

        `PyMySQL` 是一个纯 Python 实现的 MySQL 客户端库,允许开发者通过 Python 程序与 MySQL 数据库进行交互。它遵循 PEP 249(Python 数据库 API 规范 v2.0),提供了与 MySQL 数据库连接、查询和管理的功能。`PyMySQL` 的一大优势在于其不依赖外部 C 库或 MySQL 客户端库,这使得安装和部署更加简便,同时也增强了跨平台兼容性。该库支持多种字符集和编码,并且能够处理复杂的 SQL 操作,如事务、游标和参数化查询等。此外,`PyMySQL` 具有良好的线程安全性,在多线程环境中也能稳定运行。它广泛应用于 Web 开发、数据处理和分析等领域,特别适合需要频繁与 MySQL 数据库交互的应用场景。由于其活跃的社区支持和定期更新,`PyMySQL` 成为了 Python 开发者操作 MySQL 数据库时的一个可靠选择。使用 `PyMySQL`,开发者可以通过简单的代码实现数据库连接、执行 SQL 语句、获取查询结果等一系列操作,极大地提高了开发效率。同时,它也支持连接池等功能,进一步优化了数据库访问性能。总之,`PyMySQL` 是一个功能强大、易于使用且性能优良的 MySQL 数据库接口库,为 Python 开发者提供了便捷的数据访问途径。

二、pymysql基本操作

1、下载pymysql库

在win+R终端输入下面指令,完成下载

pip install pymysql

2、创建SQL环境

pymysql的运行首先得需要mysql环境,所以得先创建库表

进入数据库(这里省略着写,具体教程见上文

d:
cd D:\load_software\Mysql8.0\MySQL Server 8.0\Install\bin
mysql -uroot -p
#输入密码即可进入

创建一个表:

#进入practice数据库
use practice;
#创建tb1表
create table tb1(
    id int not null auto_increment primary key,
    name varchar(64) not null,
    age tinyint,
    password varchar(64) not null
)DEFAULT CHARSET=utf8;
#查看表属性
desc tb1;

3、使用pymysql对SQL进行增删改查

增加数据

导入pymysql

import pymysql

连接MySQL

# 1、连接MySQL
# 创建连接
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="612612",charset='utf8',db='practice')
# 创建游标(相当于收发指令)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

参数介绍

参数名介绍
hostip地址,本机默认127.0.0.1
port端口,默认3306
user用户,默认root
passwd数据库登录密码
charset编码格式
db连接数据库名称

发送指令

(注意,模板字符串只能使用pymysql自带的模板,不能使用.format、f之类的)

#用游标execute生成sql语句
sql = "insert into tb1(name,age,password) values(%s,%s,%s)"
cursor.execute(sql,[name,age,pwd])

#提交命令
conn.commit()

关闭、断开连接

# 3.关闭
# 断开连接
cursor.close()
conn.close()

可以使用while循环+input函数,与用户交互,完整代码如下:

import pymysql

while True:
    name = input("用户名:")
    if name.upper() == 'Q':
        break
    age = input("年龄:")
    pwd = input("密码:")

    # 1.连接MySQL
    # 创建连接
    conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="612612",charset='utf8',db='practice')  #db是数据库名称
    # 创建游标(相当于收发指令)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

    # 2.发送指令

    #用游标execute生成sql语句
    sql = "insert into tb1(name,age,password) values(%s,%s,%s)"
    cursor.execute(sql,[name,age,pwd])

    # 提交命令
    conn.commit()

    # 3.关闭
    # 断开连接
    cursor.close()
    conn.close()


运行,输入数据

在控制台查看数据是否存入

再对表中添加数据以便删除展示

查找数据

相比增加数据代码,只需修改指令,并读取数据即可,也不需要提交命令。

发送指令

# 2.发送指令
sql_2 = "select * from admin where id>3 "
cursor.execute(sql_2)

获取数据

import pprint

data_list = cursor.fetchall()  #fetchall()获取到所有数据
#data_list = cursor.fetchone() 获取满足条件的第一条数据
# pprint.pprint(data_list)  #获取一个列表,列表中是字典
for row in data_list:
    pprint.pprint(row)

pprint库可以使得获取的数据结构更加易懂

完整代码:

import pymysql
import pprint

# 1.连接MySQL
# 创建连接
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="612612",charset='utf8',db='practice')  #db是数据库名称
# 创建游标(相当于收发指令)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 2.发送指令
sql_2 = "select * from tb1 where id>3 "
cursor.execute(sql_2)
data_list = cursor.fetchall()  #fetchall()获取到所有数据
#data_list = cursor.fetchone() 获取满足条件的第一条数据
# pprint.pprint(data_list)  #获取一个列表,列表中是字典
for row in data_list:
    pprint.pprint(row)



# 3.关闭
# 断开连接
cursor.close()
conn.close()


显示结果:

可以通过字典的基础操作获取用户需要的值

删除数据

删除数据仅仅需要修改指令即可

sql_2 = "delete from tb1 where name='小贤' and name='老茧' "

完整代码:

import pymysql

# 1.连接MySQL
# 创建连接
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="612612",charset='utf8',db='practice')  #db是数据库名称
# 创建游标(相当于收发指令)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 2.发送指令
sql_2 = "delete from tb1 where name='小贤' and name='老茧' "
cursor.execute(sql_2)
# 提交命令
conn.commit()

# 3.关闭
# 断开连接
cursor.close()
conn.close()


删除后结果:

修改数据

修改数据也是只需按需求修改指令即可

cursor.execute("update tb1 set password=%s where name=%s",['8888888','叶豪', ])

完整代码:

import pymysql

# 1.连接MySQL
# 创建连接
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="612612",charset='utf8',db='practice')  #db是数据库名称
# 创建游标(相当于收发指令)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 2.发送指令
cursor.execute("update tb1 set password=%s where name=%s",['8888888','叶豪', ])
# 提交命令
conn.commit()

# 3.关闭
# 断开连接
cursor.close()
conn.close()



结果:

三、项目实例

需求:

现在有一个数据,包括分拣中心、日期、小时、货量,现在需要将这些数据存入Mysql中,并能通过分拣中心、日期、小时来检索出货量,要求交互性强。

数据如下:

通过百度网盘分享的文件:new_结果表2.csv
链接:https://pan.baidu.com/s/1JWp21KD7Zwzn1BrF2Tg44w 
提取码:olp7

由于最近要准备期末考试了,所以就不给大家更详细教程洛,大家可以自己设计,做一做。

感谢您的三连!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyQt实战——使用python提取JSON数据(十)

系类往期文章: PyQt5实战——多脚本集合包,前言与环境配置(一) PyQt5实战——多脚本集合包,UI以及工程布局(二) PyQt5实战——多脚本集合包,程序入口QMainWindow(三&…

51单片机学习笔记——找不到REG52.H头文件,点亮一个LED

创建工程 将STC型号导入keil并使用 STC可以从官网下载,也可我这的网盘: 链接:https://pan.baidu.com/s/1bO85DPN3IFaXGhiKSwyOrA?pwd7f4h 提取码:7f4h 打开STC,选择“keil仿真设置”,选择“添加型号和头…

windows和mac共享文件夹访问教程

mac共享文件夹,windows访问: mac上开启文件夹共享,并添加文件夹和用户,然后windows 上 在windows上快捷键 win r 打开运行,按如下格式输入mac设备的IP地址: 就可以访问了: windows共享文件夹…

webauthn介绍及应用

1、webauthn介绍 官网:https://webauthn.io/ 1.1、什么是webauthn? webauthn即Web Authentication,是一个符合W3C标准的Web认证规范。它通过公私钥加密技术,实现无密码认证,用户仅需通过pin码、指纹、面部识别、usb …

iOS AccentColor 和 Color Set

AccentColor 和 Color Set 都是 Xcode 中用于颜色管理的功能,它们适用于不同的开发场景和需求。以下是它们的区别和应用场景分析: 1. AccentColor(强调色) 1.1 概念: • AccentColor 是在 Xcode 12 中引入的&#xf…

TiDB 的MPP架构概述

MPP架构介绍: 如图,TiDB Server 作为协调者,首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换,让表连接在一个TiFlash上。另外 TiFlash会作为计算节点,每个TiFlash都负责数据交换,表连接…

git回退指定版本/复制提交id

1.使用“git reset --hard 目标版本号”命令将版本回退2.使用“git push -f”提交更改 因为我们回退后的本地库HEAD指向的版本比远程库的要旧,此时如果用“git push”会报错。 改为使用 git push -f 即可完成回退后的提交。

本地部署 LLaMA-Factory

本地部署 LLaMA-Factory 1. 本地部署 LLaMA-Factory2. 下载模型3. 微调模型3-1. 下载数据集3-2. 配置参数3-3. 启动微调3-4. 模型评估3-5. 模型对话 1. 本地部署 LLaMA-Factory 下载代码, git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Facto…

BLE core 内容整理解释

本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…

HEIC 是什么图片格式?如何把 iPhone 中的 HEIC 转为 JPG?

在 iPhone 拍摄照片时,默认的图片格式为 HEIC。虽然 HEIC 格式具有高压缩比、高画质等优点,但在某些设备或软件上可能存在兼容性问题。因此,将 HEIC 格式转换为更为通用的 JPG 格式就显得很有必要。本教程将介绍如何使用简鹿格式工厂&#xf…

黑马商城项目—服务注册、服务发现

服务注册 我们把item-service注册到Nacos,步骤如下: 1.引入依赖 在item-service的pom.xml中添加依赖: 2.配置Nacos 在item-service的application.yml中添加nacos地址配置: 3.配置服务实例 为了测试一个服务多个实例的情况,我…

如何卸载和升级 Angular-CLI ?

Angular-CLI 是开发人员使用 Angular 的必备工具。然而,随着频繁的更新和新版本的出现,了解如何有效地卸载和升级 Angular-CLI 对开发人员来说至关重要。本指南提供了一个全面的、循序渐进的方法来帮助您顺利过渡到最新版本。 必备条件 确保您的系统上…

有道云笔记批量导出

前言 最近使用有道云笔记遇到打开过慢,导致笔记丢失,需要会员才能找回之前笔记问题。 决定改用思源,程序中的格式比较难于通过复制保留,即使导出成word 或者pdf,需要一个专门工具导出成Markdown格式,批量…

设计模式与游戏完美开发(2)

更多内容可以浏览本人博客:https://azureblog.cn/ 😊 该文章主体内容来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式(Facade) 一、游戏子功能的整合 一个游戏程序常常由内部数个不同的…

学习C++:变量

变量: 作用:给一段指定的内存空间起名,方便操作这段内容 (变量存在的意义:方便我们管理内存空间) 语法:数据类型 变量名 初始值; 实例:

electron-vite_18 设置系统音量loudness报错

loudness是一款控制系统音量输出的一款 Node.js 库;但是在electron-vite中直接使用编译的时候会报错;这个时候需要单独处理; 错误分析 error Error: spawn E:\xxx\out\main\adjust_get_current_system_volume_vista_plus.exe 查看编译后项目…

Chrome被360导航篡改了怎么改回来?

一、Chrome被360导航篡改了怎么改回来? 查看是否被360主页锁定,地址栏输入chrome://version,看命令行end后面(蓝色部分),是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步&#xff1a…

微信小程序-基于Vant Weapp UI 组件库的Area 省市区选择

Area 省市区选择,省市区选择组件通常与 弹出层 组件配合使用。 areaList 格式 areaList 为对象结构,包含 province_list、city_list、county_list 三个 key。 每项以地区码作为 key,省市区名字作为 value。地区码为 6 位数字,前两…

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容,方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里:发现正确识别和分析了链接里面的内容 链接如下:https://arxiv.org/pdf/2009.1…

GitLab的卸载与重装

目录 一、GitLab的卸载 二、 GitLab的安装与配置 1. 创建安装目录 2. 安装 3. 使用 3.1 初始化 3.2 创建空白项目 ​编辑 3.3 配置SSH 3.3.1 配置公钥 ​编辑 3.3.2 配置私钥 3.4 配置本地git库 一、GitLab的卸载 1. 停止gitlab sudo gitlab-ctl stop 2. 卸载…