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

Python - 使用 pymysql 操作 MySQL 详解

目录

  • 创建连接 pymsql.connect() 方法的可传参数
  • 连接对象 conn = pymsql.connect() 方法
  • 游标对象 cursor() 方法
  • 使用示例
    • 创建数据库表
    • 插入数据操作
    • 数据查询操作
    • 数据更新操作
    • 数据删除操作
    • SQL中使用变量
  • 封装使用

简单使用

import pymysqldb = pymysql.connect(host='',user='',password='',database='')
cursor = db.cursor()
try:cursor.execute("SELECT * FROM employees LIMIT 200")results = cursor.fetchall()print(results)
except Exception as e:print("查询失败" + str(e))

创建连接 pymsql.connect() 方法的可传参数

pymsql.connect()的可传参数:

参数说明
user数据库用户名
password数据库用户密码
host数据库连接地址
database要连接的数据库名称
port端口号,默认3306
charset要连接的数据库的字符编码(可以在终端登陆mysql后使用 \s 查看),默认""
connect_timeout连接数据库的超时时间,(默认值:10,最小值:1,最大值:31536000)
unix_socket可以选择使用unix套接字而不是TCP/IP,默认None
sql_mode要使用的默认sql_mode,默认None
read_default_file指定my.cnf文件以从[client]部分下读取这些参数,默认None
conv要使用的转换词典,而不是默认词典,默认None
use_unicode是否默认为unicode字符串,默认True
client_flag要发送到MySQL的自定义标志。在常量.CLIENT中查找潜在值,默认0
cursorclass要使用的自定义游标类,默认Cursor
init_command建立连接时要运行的初始SQL语句,默认None
read_default_group配置文件中要读取的组,默认None
autocommit自动提交模式。无表示使用服务器默认值。(默认值:False)
local_infile布尔值以启用LOAD DATA local命令。(默认值:False)
max_allowed_packet发送到服务器的数据包的最大大小(字节)。(默认值:16MB)。仅用于限制“LOAD LOCAL INFILE”数据包的大小小于默认值(16KB)
defer_connect在构造时不显式连接-等待连接调用。(默认值:False)
auth_plugin_map处理插件的类的插件名称字典,默认None
read_timeout读取超时时间,默认None
write_timeout写入超时时间,默认None
bind_address当客户端具有多个网络接口时,请指定连接到主机的接口。参数可以是主机名或IP地址,默认None
binary_prefix在字节和字节数组上添加二进制前缀,默认False
program_name程序名称,默认None
server_public_keySHA256身份验证插件公钥值。,默认None
ssl类似于mysql_ssl_set()参数的参数字典,默认None
ssl_ca包含PEM格式ca证书的文件路径,默认None
ssl_cert包含PEM格式客户端证书的文件的路径,默认None
ssl_disabled禁用TLS的布尔值,默认None
ssl_key包含客户端证书的PEM格式私钥的文件路径,默认None
ssl_verify_cert设置为true以检查服务器证书的有效性,默认None
ssl_verify_identity设置为true以检查服务器的标识,默认None
compress不支持
named_pipe不支持
passwd已弃用,数据库的别名
db已弃用,密码别名

连接对象 conn = pymsql.connect() 方法

方法说明
conn.cursor()创建并返回游标
conn.commit()提交当前事务
conn.rollback()回滚当前事务
conn.close()关闭connection

游标对象 cursor() 方法

方法说明
execute()用于执行一个数据库的查询命令
executemany(query, args)针对一个查询运行多个数据
fetchone()获取结果集的下一行
fetchmany(size)获取结果集中的size行数据
fetchall()获取结果集中的所有行
rowcount最近一次execute返回数据/影响的行数
close()关闭游标

使用示例

创建数据库表

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='root',password='',database='laomao')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 使用预处理语句创建表
sql = """CREATE TABLE `employees` (`employee_id`       int primary key auto_increment,`employee_name`     varchar(20) DEFAULT NULL,`email`             varchar(25) NOT NULL,`birthday`          datetime    null) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""cursor.execute(sql)# 关闭数据库连接
db.close()

插入数据操作

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='root',password='',database='laomao')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# SQL 插入语句
sql = """INSERT INTO ssm.employees (employee_name, email, birthday)VALUES ('乐昌','905364660@qq.com','2008-08-18 00:00:00'),('老猫','123@123.com','2020-02-22 06:06:06')"""try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 如果发生错误则回滚db.rollback()
# 关闭数据库连接
db.close()

数据查询操作

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='root',password='',database='laomao')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# SQL 查询语句
sql = """SELECT * FROM employees LIMIT 200"""try:# 执行SQL语句cursor.execute(sql)# 获取所有记录列表results = cursor.fetchall()for row in results:employee_id = row[0]name = row[1]email = row[2]birthday = row[3]# 打印结果print("employee_id=%s, name=%s, email=%s, birthday=%s" % (employee_id, name, email, birthday))
except:print("Error: unable to fetch data")# 关闭数据库连接
db.close()# 输出
employee_id=1, name=乐昌, email=905364660@qq.com, birthday=2008-08-18 00:00:00
employee_id=2, name=老猫, email=123@123.com, birthday=2020-02-22 06:06:06

数据更新操作

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='root',password='',database='laomao')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# SQL 更新语句
sql = """UPDATE ssm.employees SET employee_name = '彦祖' WHERE employee_id = 1"""try:# 执行SQL语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 发生错误时回滚db.rollback()# 关闭数据库连接
db.close()

数据删除操作

import pymysql# 打开数据库连接
db = pymysql.connect(host='localhost',user='root',password='',database='laomao')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# SQL 删除语句
sql = """DELETE FROM employees WHERE employee_id = 2"""try:# 执行SQL语句cursor.execute(sql)# 提交到数据库执行db.commit()
except:# 发生错误时回滚db.rollback()# 关闭数据库连接
db.close()

SQL中使用变量


birthday = "2008-08-18 00:00:00"sql = "SELECT * FROM employees WHERE birthday = " + "'" + birthday + "' LIMIT 10"
print(sql)# 打印
SELECT * FROM employees WHERE birthday =  '2008-08-18 00:00:00' LIMIT 10

封装使用

#!/usr/bin/python3import pymysqldef conn():'''连接MySQL数据库'''try:conn = pymysql.connect(host='',user='',password='',database='')conn.set_charset('utf8')return connexcept Exception:raise Exception("数据库连接失败")def query(sql):print('sql:'+sql)db = conn()cursor = db.cursor()try:cursor.execute(sql)result = cursor.fetchall()if result: return resultreturn ["none"]except Exception as e:db.rollback()print("查询失败," + str(e))finally:cursor.close()db.close()
if __name__ == '__main__':select_data = query("SELECT * FROM tb_name LIMIT 20")print(select_data)

相关文章:

Python - 使用 pymysql 操作 MySQL 详解

目录创建连接 pymsql.connect() 方法的可传参数连接对象 conn pymsql.connect() 方法游标对象 cursor() 方法使用示例创建数据库表插入数据操作数据查询操作数据更新操作数据删除操作SQL中使用变量封装使用简单使用: import pymysqldb pymysql.connect(host,user…...

机器学习-卷积神经网络CNN中的单通道和多通道图片差异

背景 最近在使用CNN的场景中,既有单通道的图片输入需求,也有多通道的图片输入需求,因此又整理回顾了一下单通道或者多通道卷积的差别,这里记录一下探索过程。 结论 直接给出结论,单通道图片和多通道图片在经历了第一…...

考研复试——计算机组成原理

文章目录计算机组成原理1. 计算机系统由哪两部分组成?计算机系统性能取决于什么?2. 冯诺依曼机的主要特点?3. 主存储器由什么组成,各部分有什么作用?4. 什么是存储单元、存储字、存储字长、存储体?5. 计算机…...

硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)

总结一下在机器人上常用的几种摄像头,最近在组装机器人时,傻傻分不清摄像头的种类。由于本人知识有限,以下资料都是在网上搜索而来,按照摄像头的分类整理一下,供大家参考: 1.IR摄像头: IRinfr…...

PTA:C课程设计(2)

山东大学(威海)2022级大一下C习题集(2)2-5-1 字符定位函数(程序填空题)2-5-2 判断回文(程序填空题)2-6-1 数字金字塔(函数)2-6-2 使用函数求最大公约数(函数)2-6-3 使用函数求余弦函…...

第四章:面向对象编程

第四章:面向对象编程 4.1:面向过程与面向对象 面向过程(POP)与面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象&…...

Linux 安装npm yarn pnpm 命令

下载安装包 node 下载地址解压压缩包 tar -Jxf node-v19.7.0-linux-x64.tar.xz -C /root/app echo "export PATH$PATH:/app/node-v16.9.0-linux-x64" >> /etc/profile source /etc/profile ln -sf /app/node-v16.9.0-linux-x64/bin/npm /usr/local/bin/ ln -…...

linux SPI驱动代码追踪

一、Linux SPI 框架概述 linux系统下的spi驱动程序从逻辑上可以分为3个部分: SPI Core:SPI Core 是 Linux 内核用来维护和管理 spi 的核心部分,SPI Core 提供操作接口,允许一个 spi master,spi driver 和 spi device 在 SPI Cor…...

Ls-dyna材料的相关学习笔记

Elastic Linear elastic materials -Isotropic:各向同性材料 -orthotropic 正交各向异性的 -anistropic 各向异性的...

Arrays方法(copyOfRange,fill)

Arrays方法 1、Arrays.copyOfRange Arrays.copyOfRange的使用方法 功能: 将数组拷贝至另外一个数组 参数: original:第一个参数为要拷贝的数组对象 from:第二个参数为拷贝的开始位置(包含) to:…...

AcWing - 蓝桥杯集训每日一题(DAY 1——DAY 5)

文章目录一、AcWing 3956. 截断数组(中等)1. 实现思路2. 实现代码二、AcWing 3729. 改变数组元素(中等)1. 实现思路2. 实现代码三、AcWing 1460. 我在哪?(简单)1. 实现思路2. 实现代码四、AcWin…...

RHCSA-文件的其他命令(3.7)

目录 文件的其他命令: 文本内容统计wc 移动和复制(cp) 移动 查找文件的路径 压缩和解压缩 .tar(归档命令) shell-命令解释器 linux中的特殊字符 查看系统上的别名:alias 历史命令(his…...

多线程update导致的mysql死锁问题处理方法

最近想起之前处理过的一个mysql 死锁问题,是在高并发下update批量更新导致的,这里探讨一下发生的原因,以及解决办法; 发生死锁的sql语句如下,其中where条件后的字段是有复合索引的。 update t_push_message_device_h…...

SpringBoot 如何保证接口安全?

为什么要保证接口安全对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。 如果你的接口在外网裸奔,只要让黑客知道接口的地址和参数就可以调用,那简直就是灾难。举个例子:你的网站用户注册的时候&am…...

英伟达驱动爆雷?CPU占用率过高怎么办?

又有一新驱动导致CPU占用率过高? 上周英伟达发布531.18显卡驱动,为大家带来了视频超分辨率技术,并为新发布的热门游戏《原子之心》提供支持。 但在安装新驱动后没过不久就有玩家反映,在游戏结束后会出现CPU占用率突然飙升到10%以…...

链表经典面试题【典中典】

💯💯💯链表经典面试题❗❗❗炒鸡经典,本篇带有图文解析,建议动手刷几遍。🟥1.反转链表🟧2.合并两个有序链表🟨3.链表分割🟩4.链表的回文结构🟦5.相交链表&…...

Java泛型深入

一. 泛型的概述和优势 泛型概述 泛型&#xff1a;是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。泛型的格式&#xff1a;<数据类型>&#xff0c;注意&#xff1a;泛型只能支持引用数据类型。集合体系的全部接口和实现类都是…...

体验Linux USB 驱动

目录 一、USB OTG 二、I.MX6ULL USB 接口简介 硬件原理图 1、USB HUB 原理图 2 、USB OTG 原理图 三、使能驱动 1、打开 HID 驱动 2、 使能 USB 键盘和鼠标驱动 3 、使能 Linux 内核中的 SCSI 协议 4、使能 U 盘驱动 四、测试u盘 五、 Linux 内核自带 USB OTG USB 是…...

servlet 中的ServletConfig与servletContext

ServletConfig对象&#xff1a;servlet配置对象&#xff0c;主要把servlet的初始化参数封装到这个对象中。 一个网站中可能会存在多个servletConfig对象&#xff0c;一个servletConfig对象就封装了一个servlet的配置信息。 可以在web.xml中通过<init-param></init-p…...

Hadoop3.1.3单机(伪分布式配置)

参考&#xff1a;林子雨老师网站博客 Hadoop安装搭建伪分布式教程&#xff08;全面&#xff09;吐血整理 环境 Vmare12 Ubuntu16.04 创建Hadoop用户 若安装Ubuntu不是用的“hadoop”用户&#xff0c;则需要增加一个名为"hadoop"的用户 直接快捷键ctrlaltt或者点…...

YOLOFuse问题解决:常见报错处理与数据准备注意事项

YOLOFuse问题解决&#xff1a;常见报错处理与数据准备注意事项 1. 引言 在使用YOLOFuse进行多模态目标检测时&#xff0c;很多开发者会遇到各种报错和数据准备问题。本文将聚焦实际工程落地中的常见痛点&#xff0c;帮助您快速解决这些问题。 YOLOFuse作为基于YOLO框架的双流…...

Nanbeige 4.1-3B效果实测:暗色模式切换对像素UI可读性与氛围影响

Nanbeige 4.1-3B效果实测&#xff1a;暗色模式切换对像素UI可读性与氛围影响 1. 项目背景与设计理念 Nanbeige 4.1-3B是一款融合了复古游戏美学与AI对话技术的创新产品。这套"像素冒险聊天终端"专为Nanbeige 4.1-3B大语言模型设计&#xff0c;通过独特的视觉呈现方…...

从零开始:通义千问1.8B-Chat WebUI部署完整流程

从零开始&#xff1a;通义千问1.8B-Chat WebUI部署完整流程 想在自己的服务器上快速搭建一个轻量级的AI对话助手吗&#xff1f;今天&#xff0c;我就带你一步步完成通义千问1.8B-Chat模型的WebUI部署。这个版本经过GPTQ-Int4量化&#xff0c;显存需求不到4GB&#xff0c;用普通…...

GeoServer漏洞复现实战:从SQL注入到SSRF的5个关键CVE解析(附环境搭建指南)

GeoServer漏洞复现深度指南&#xff1a;从环境搭建到实战利用 1. 环境准备与基础配置 在开始漏洞复现之前&#xff0c;我们需要搭建一个完整的GeoServer测试环境。以下是详细的配置步骤&#xff1a; 1.1 GeoServer安装与启动 首先从官网下载GeoServer 2.22.1版本&#xff08;该…...

Lychee-Rerank在HR简历筛选中的应用:查询-候选人简历匹配度自动评分

Lychee-Rerank在HR简历筛选中的应用&#xff1a;查询-候选人简历匹配度自动评分 1. 工具简介与核心价值 Lychee-Rerank是一个基于先进AI技术的本地检索相关性评分工具&#xff0c;专门为「查询-文档」匹配度打分场景设计。在HR简历筛选这个具体应用中&#xff0c;它能够帮助招…...

使用Docker安装Nextcloud网盘

1、安装Docker详见&#xff1a;https://mp.weixin.qq.com/s/CrjQTLJM0YbJ9SC4GIfKsg2、安装Nextcloud详见&#xff1a;https://github.com/nextcloud/docker创建目录&#xff1a;mkdir nextcloud切换目录&#xff1a;cd nextcloud2.1、方式1&#xff1a;使用apache镜像运行容器…...

【2026年最新600套毕设项目分享】基于SpringBoot的校园信息共享系统(14200)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

日本汽车又赢了,增程连连下跌,国产车下注节油混动了

2025年增程车只卖了123.5万辆&#xff0c;增速大幅下降&#xff0c;甚至从2025年下半年起连连下滑&#xff0c;占电车销量的比例跌穿了一成&#xff0c;这让国产车大失所望&#xff0c;面对这样的现实部分国产车企迅速转向&#xff0c;开年以来多家国产车企都发布了小容量电池的…...

2026年阿里云ECS服务器全攻略:从基础认知和价格体系到购买以及部署流程

一、阿里云ECS核心定义&#xff1a;不止是“云上服务器” 阿里云ECS&#xff08;Elastic Compute Service&#xff09;是国内云计算领域的标杆产品&#xff0c;基于飞天架构&#xff08;包括飞天神龙计算、飞天盘古存储、飞天洛神网络&#xff09;打造&#xff0c;为全球500万…...

「开源者行」开源社高校宣讲:复旦大学站

由开源社及上海复旦大学计算机学院研究生团学联共同主办的高校巡回宣讲活动&#xff0d;「开源者行」#06 复旦大学站将在11月27日&#xff08;周四&#xff09;晚18:00 - 20:30 于复旦大学张江校区软件楼105室开启沙龙。 第六站沙龙得到了上海复旦大学计算机学院研究生团学联的…...