首页 > 数据库 >【全栈开发】----用pymysql库连接MySQL,批量存入

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

时间:2024-12-22 23:30:50浏览次数:12  
标签:cursor name 数据库 pymysql ---- 全栈 MySQL conn

本文基于前面的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

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

感谢您的三连!!!

标签:cursor,name,数据库,pymysql,----,全栈,MySQL,conn
From: https://blog.csdn.net/2403_83182682/article/details/144629731

相关文章

  • 多线程-锁-写锁(独占锁)/读锁(共享锁)
    一个资源能够被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程。特点        可重入        读写分离无锁无序→加锁→读写锁演变classMyResource{Map<String,String>map=newHashMap<>();//=====ReentrantLock等价于=====s......
  • 运用myabits
    要使用MyBatis,只需将mybatis-x.x.x.jar文件置于类路径(classpath)中即可。如果使用Maven来构建项目,则需将下面的依赖代码置于pom.xml文件中:org.mybatismybatisx.x.x从XML中构建SqlSessionFactory每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为核......
  • 模型 结构化思维
    系列文章分享 模型,了解更多......
  • 人口普查 PAT乙级
    某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。......
  • 打 印 菱 形
    本题要求你写个程序打印成菱形的形状。例如给定17个符号,要求按下列格式打印*************所谓“菱形形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数从1开始先从小到大顺序递增,再从大到小递减到1;首尾符号数相等。给定任意N个符号,不一定能......
  • 渗透之SolidState靶机
    目录1、信息收集1.1namp扫描1.扫描端口2.端口详细信息3.脚本扫描1.2nikto1.3gobuster2、信息整合2.1、端口服务2.2、页面3、渗透3.1获取shell1.JAMES漏洞2.尝试默认密码3.修改邮箱用户密码4.查看用户邮件5.进入ssh6.逃逸rbash获取到正常......
  • 文件包含tomato靶机通关
    连接到靶机将网址放到dirb中扫描一下得到了三个目录我们挨个访问一下第一个是主目录第二个是主页面第三个报错我们在主目录页面继续访问发现了info.php打开发现存在文件包含我们查看页面源代码现存在文件包含的参数是image我们通过读取/etc/passwd来......
  • upload-labs靶场通关攻略
    第一关在靶场文件夹中新建一个uoload文件夹创建一个木马文件上传,提示文件类型错误在浏览器页面按F12,点击箭头找到上传框的代码,删掉returncheckFile再次上传找到木马的地址链接蚁剑进入连接,成功第二关需要把木马文件改为jpg,利用抓包工具抓包jpg改为php放行......
  • 文件解析漏洞
    IIS解析漏洞在iis6.x中,.asp文件夹中的任意文件都会被当做asp文件去执行在默认网站里创建一个a.asp文件夹并创建一个1.jpg写进我们的asp代码单独创建一个1.jpg发现并不能解析在a.asp下被解析Nginx解析漏洞(nginx_parsing&CVE-2013-454)nginx_parsing访问网站写一个图......
  • react中怎么实现防抖Debounce和节流Throttle
    1.防抖 (Debounce)://1.自定义Hook实现防抖import{useState,useEffect}from'react';functionuseDebounce<T>(value:T,delay:number=300):T{const[debouncedValue,setDebouncedValue]=useState<T>(value);useEffect(()=>......