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_key | SHA256身份验证插件公钥值。,默认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泛型深入
一. 泛型的概述和优势 泛型概述 泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。泛型的格式:<数据类型>,注意:泛型只能支持引用数据类型。集合体系的全部接口和实现类都是…...
体验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对象:servlet配置对象,主要把servlet的初始化参数封装到这个对象中。 一个网站中可能会存在多个servletConfig对象,一个servletConfig对象就封装了一个servlet的配置信息。 可以在web.xml中通过<init-param></init-p…...
Hadoop3.1.3单机(伪分布式配置)
参考:林子雨老师网站博客 Hadoop安装搭建伪分布式教程(全面)吐血整理 环境 Vmare12 Ubuntu16.04 创建Hadoop用户 若安装Ubuntu不是用的“hadoop”用户,则需要增加一个名为"hadoop"的用户 直接快捷键ctrlaltt或者点…...
HBase---浅谈HBase原理
浅谈HBase原理 文章目录浅谈HBase原理HBase定义HBase逻辑结构HBase物理存储结构TimeStampType数据模型NaneSpaceRegionRowColumnTineStampCellHBase架构MasterMaster 架构Meta 表格介绍Region ServerRegionServer 架构MemStoreWALBlockCacheZookeeperHDFSHBase写数据流程HBase读…...
学习笔记四:dockerfile
Dockerfile概述dockerfile语法详解FROMMAINTAINERRUN:指定在当前镜像构建过程中要运行的命令EXPOSE指令CMDENTERYPOINTCOPYADDVOLUMEWORKDIRENVUSERONBUILDLABELHEALTHCHECKARG概述 Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜…...
微服务里的小问题
1.微服务为什么设置不同的namespace 为了实现三种服务三种情况下的隔离。 2.为什么要用nginx为naocos集群结点做负载均衡? 2.1 正向代理 就像我们访问外网需要一个代理。 2.2 反向代理 我们不需要访问真实的ip,只需要访问 这个服务的代理服务器即可&a…...
数据库之基本功:Where 中常用运算符
1. 运算符及优先级 ( )优先级最高 SQL> show user; USER is "SCOTT" SQL> select ename, job, sal, comm from emp where jobSALESMAN OR jobPRESIDENT and sal> 1500;ENAME JOB SAL COMM …...
浅谈 Nodejs原型链污染
一直在做php的题目,对其它语言做的很少。刚好在西湖论剑2022复现时,遇到了一道原型链污染的题目,借此机会开始简单学习一下 Nodejs的洞 p🐂讲解的十分清楚,因此下面举例子就直接用p🐂的例子进行解释了 目…...
Linux系统安装Docker
目录 Linux系统安装Docker 1、如果之前安装过旧版本的Docker,可以使用下面命令卸载 2、安装docker 3、启动docker 4、配置镜像加速 Linux系统安装Docker 前提:Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10࿰…...
MCP2515国产替代DP2515带有SPI 接口的独立CAN 控制器
DP2515是一款独立控制器局域网络(Controller AreaNetwork, CAN)协议控制器,完全支持CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。DP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的…...
【Kubernetes】第二十篇 - k8s 污点和容忍度
一,前言 上一篇,介绍了 k8s ConfigMap 管理服务环境变量; 本篇,介绍 k8s 污点和容忍度; 二,污点与容忍度介绍 通过污点和容忍度配置可以干预 Pod 部署到特定的节点; 比如: 不想让…...
60% 程序员大呼:我要远程办公!
近几年数字化的普及,白领们从挤地铁、打卡、开会、写日报转变成“早上9点视频会议”,企业的办公场所也从写字楼、会议室、工位变成了手机、电脑中的线上会议室,远程办公已经成为一种流行的办公形式。《财富》杂志发现,75%的员工表…...
jmeter+ant+jenkins接口自动化测试框架
大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件;Ant是基与java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具。将这三者结合起来可以搭建一套We…...
南京汽车集团网站建设/杭州百度快照优化排名推广
OpenCV提供createTrackbar()函式,可以在視窗上產生滑桿,讓使用者自己調整輸入,接著用這輸入值執行預計的操作,另外有getTrackbarPos()和setTrackbarPos()函式,讓我們對滑桿進行進一步的操作。 OpenCV 產生滑桿 int c…...
discuz 做视频网站/网络营销的核心是
2019独角兽企业重金招聘Python工程师标准>>> Kubernetes社区的生态繁荣和该领域技术的快速茁壮发展,已经是众所周知。Kubernetes领域有太多强大的、创新的技术产品,而最近引起我注意的项目是ExternalDNS。这是在近期的POC期间客户主动咨询起来…...
wordpress会员制订阅/广告网站策划方案
三种事件绑定方法总结1、多种事件绑定方式汇总2、源代码1、多种事件绑定方式汇总 组件对象的绑定 通过 command 属性绑定(适合简单不需获取 event 对象)Button(window, text "login", command login)通过 bind 方法绑定(适合需…...
用手机怎么制作app软件/seo网络推广怎么做
一、元素背景是指哪些区域 默认情况下元素的背景是指元素border(包含border)以内的区域。 在CSS3中可用使用background-clip改变元素背景区域。 1.1 background-clip 指定背景在被应用元素上的绘制区域。元素盒模型包含content, padding, border, margi…...
网站主题 模板/下载百度安装
最近做了个项目,该项目可以方便查询全国地铁线路,地铁线路上模拟小车到站提醒,点击小车可触发相关事件,使用的有 百度地图查询地铁线路 ,地铁图api,再结合vue-baidu-map 1.判断地铁线路图加载完成 //会有…...
亦庄开发区建设局网站/seo网站优化专员
首先要确保自己的jdk、mysql、idea、maven安装完毕 1.搭建一个提供测试的数据库 CREATE DATABASE mybatis;USE mybatis;DROP TABLE IF EXISTS user;CREATE TABLE user ( id int(20) NOT NULL, name varchar(30) DEFAULT NULL, pwd varchar(30) DEFAULT NULL, PRIMARY KEY (id…...