当前位置: 首页 > 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或者点…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...