pymysql自学笔记

Python中pymysql模块详解:安装、连接、执行SQL语句等常见操作 pymysql是一个用于Python编程的第三方模块,用于连接和操作MySQL数据库。它提供了一个简单而强大的接口,使开发者能够轻松地在Python程序中执行各种数据库操作,如查询、插入、更新和删除数据等。pymysql模块由Python实现,它遵循Python Database API规范(PEP 249),这使得它与其他数据库API兼容,并使得在不同的数据库之间切换变得更加容易。pymysql在Python开发者社区非常受欢迎,因为它易于使用、功能强大并且具有良好的性能。 阅读详情

一、MySQL的驱动库

MySQLdb
最有名的库。支持Python 2,但不支持Python3
pymysql
语法兼容MySQLdb,使用Python写的库,支持Python 3

二、导入库

import pymysql

三、一般流程

-1. 建立连接 2.获取游标 3. 执行SQL 4.提交事务 5.释放资源

(一)建立连接

pymsql.connect()方法
返回的是Connections模块下的Connection实例
其Connection初始化常用参数及说明
host 主机:常为localhost或ip地址
user 用户名
password 密码
database 数据库
port 端口:常为3306
为了判断是否正确连接数据库,使用Connection.ping()方法。

    conn = pymysql.connect(ip,user,password,database,port)
    conn.ping(False)

(二)获取游标

cursor = conn.cursor()

(三)执行SQL

例:

sql = "insert into table (name,age) values ('tom{}',18)".format(i)
cursor.execute(sql)

(四)提交事务

conn.commit()#将变更提交
conn.rollback()#回滚事务

(五)释放资源

conn.close()#关闭连接
cursor.close()#释放游标

为了出现异常后能提示用户,使用try: except:finally:对异常情况进行处理.

import pymysql

cursor = None
conn = None
try:
   conn = pymysql.connect(ip,user,password,database,port)
   cursor = conn.cursor()
   sql = "select * from table"
   cursor.execute(sql)
   conn.commit()
except:
   conn.rollback()
finally:
   if conn:
       conn.close()
   if cursor:
       cursor.close()

四、执行sql语句

使用execute(sql,args)方法注意事项:

  • execute方法中sql语句占位符是%s,%s必须用括号()
  • args一般是list或tuple格式,如果只有一个参数,可直接传入

1.插入数据,修改数据,删除数据时,即不需要返回数据时

conn = pymysql.connect(ip,user,password,database,port)
cursor = conn.cursor()
sql = "sql语句(insert/alter/drop"
cursor.execute(sql,args)
conn.commit()
cursor.close()
conn.close()      

2.查询数据,需要返回数据时

conn = pymysql.connect(ip,user,password,database,port)
cursor = conn.cursor()
sql = "sql语句"
cursor.execute(sql,args)
result = cursor.fetchone()#将数据读出
conn.commit()
cursor.close()
conn.close() 

读取数据的方法:

  • fetchone()

获取结果集的下一行

  • fetchmany(size=None)

size指定返回的行数,None则返回空元组

  • fetchall()

返回剩下的所有行,如果走到末尾,就返回空元组,否则返回一个元组,其元素是每一行的记录封装的一个元组

  • cursor.rownumber

返回当前行号.可以修改,支持负数

  • cursor.rowcount

返回的总行数

防范SQL注入攻击的方法

参数化查询,可以有效防止注入攻击,并提高查询的效率

Cursor.execute(query,args=None)
args必须是元组 列表或字典,如果查询字符串使用%(name)s,就必须使用字典.

sql = "select * from table where name like %(name)s and age < %(age)s"
cursor.execute(sql,{'name':'tom%','age':25})
【Python自学笔记】pymysql的常用命令和方法 文章目录 阅读详情

相关推荐

【Python自学笔记】pymysql的增删改(防止sql注入)

文章目录增删改pymysql防止sql注入 增删改 了解 事务 的概念 使用正常的 SQL语句 进行增删改,但是最后需要多执行一步 在 pymysql 增删改的时候会用到两个很重要的方法:commit() rollback() commit() 简单的理解就是确认我们前面的增删改操作;而 rollback() 则是表示我们后悔了,想要回滚操作。 pymysql防止sql注入 以上内容...

XiaoqiangClub的博客 387

python的execute的arg传入与%like匹配冲突的解决

因为%在python中三个特殊的符号,如%s。%d分别代表了字符串占位符和数字占位符。 当使用like的时候需要写两次 sql = "select * from test where name like '%%%%%s%%%%'"

viviliving的专栏 1068

Python操作数据库实战:从sqlite3到PyMySQL与SQLAlchemy

数据库操作是后端开发与数据处理的基石,其核心在于通过驱动建立连接、利用游标执行SQL并管理事务。Python凭借sqlite3、PyMySQL等库,以参数化查询防止注入,借助连接池与ORM提升工程效率。在数据同步、批量处理等场景中,合理选择驱动并规避编码与占位符陷阱,能显著增强脚本的健壮性。本文围绕python安装、数据库增删改查及mysql数据库修改结构等高频需求,拆解从建连到避坑的完整路径。

weixin_34417183的博客 281

mysql模糊查询占位符python_python中的mysql数据库like模糊查询

近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询。因为%在python中三个特殊的符号,如%s。%d分别代表了字符串占位符和数字占位符。大家知道。mysql的模糊查询也须要用到%。我们有一张test表,要对name字段进行模糊查询,预期的sql例如以下:select * from test where name like '%abc%';那么pyth...

weixin_39610722的博客 465

Python操作数据库全解析:pymysql连接、事务与CRUD实战避坑指南

在Python编程学习路径中,操作数据库是连接代码与真实业务的关键环节。通过pymysql驱动连接MySQL,理解Connection与Cursor对象的职责分工,掌握事务提交与回滚机制,是每个开发者都必须具备的基础能力。数据库操作的核心在于建立连接、执行SQL、管理事务与安全处理参数化查询,这些技术原理不仅适用于MySQL,同样可迁移至轻量级的SQLite场景。批量插入时使用executemany、设置utf8mb4字符集以避免emoji报错、以及防止连接泄漏等工程实践,都能显著提升代码的健壮性与性能。无

weixin_34337381的博客 406

Python操作数据库实战:pymysql与SQLite核心技巧及避坑指南

数据库编程是Python后端开发与数据落地的核心环节,其本质是通过DB-API规范建立连接、管理事务并安全执行SQL。理解连接对象与游标对象的职责分离、参数化查询的防注入原理,以及事务提交与回滚机制,是保证数据一致性的关键。掌握这些基础后,可广泛应用于爬虫数据存储、后台工具开发等场景。本文围绕pymysql与SQLite两大驱动,拆解连接参数、占位符差异、编码设置与事务陷阱,助你快速打通Python操作数据库的完整链路。

weixin_34186128的博客 332

python查询mysql数据库_python中的mysql数据库like模糊查询

最近工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询。由于%在python中三个特殊的符号,如%s,%d分别代表了字符串占位符和数字占位符。大家知道,mysql的模糊查询也需要用到%。我们有一张test表,要对name字段进行模糊查询,预期的sql如下:select * from test where name like '%abc%';那么python...

weixin_39632524的博客 341

C++,使用Qt设计一个登录窗口

使用Qt设计一个登录界面

heyu0311的博客 2990

Python中SQL——LIKE中的%

需求: 做项目的过程中,使用了MySQL数据库,后台使用Python来做逻辑层。项目中需要实现一个功能,通过输入搜索框中的字符去MySQL中找到匹配的文章的标题。 SQL语句:SELECT * FROM T_ARTICLE WHERE title LIKE '%searchStr%' 报错: 但是在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。从网上查了一些帖子,大多

chenxiao_ji的专栏 2万+

文献阅读笔记:量子微波测量技术综述

量子微波测量技术研究进展:量子微波测量技术利用里德堡原子与微波电场的相干相互作用,突破了传统测量方法的物理限制。该技术基于电磁诱导透明效应和里德堡原子能级跃迁原理,通过激光激发原子并监测光谱变化来测量微波电场强度。相比传统方法,量子微波测量具有超高灵敏度(理论极限可达nV/cm)、宽动态范围(超过100dB)、小型化等显著优势,且测量结果可直接溯源至普朗克常数。典型实验系统包括光源、原子气室和探测器,采用光谱法、干涉法等多种测量方法。近年来,该技术在基础研究和应用方面取得重要进展,展现出在通信、雷达、计量等

Grow into a more wonderful you 987

AHRS互补滤波(Mahony)算法及开源代码

AHRS(Attitude and heading ref AHRS(Attitude and heading reference system,也就是航姿参考系统。在互补滤波算法中传感器主要采用了IMU(陀螺仪、加速度计)和磁力计。 AHRS的基本思想是,在载体没有平移运动的情况下,通过加速度感知重力分量,可以计算出载体的俯仰(Pitch)和横滚(Pitch);磁力计可以感知磁北方向,因此可以计算载体的磁北航向;而陀螺仪测量输出载体的旋转角速度,通过积分可以计算得到横滚、俯仰、航向增量,但由于陀螺输出值含

weixin_42918498的博客 3万+

python execute() 使用%s 拼接sql 避免sql注入攻击 好于.format

1 execute(参数一:sql 语句, 参数二: %s占位符传值元组) -> 元组必须以逗号结束-> 有%s就要参数二。

tenc1239的博客 1422

Buck电源设计常见的一些问题(一)半桥栅极驱动芯片共性失效问题

半桥驱动芯片主要用在器件可应用于电信,数据通信,便携式存储或更低电压系统中的电源转换器,半桥、全桥、推挽、同步降压,正激变换器和同步整流器等方面。当然难免会遇到不少问题。基本上我们在产品开发的过程中都遇到过栅极驱动芯片坏掉的情况,所以找了一些资料,学习学习。也查找查找原因。

小幽余生不加糖 2369

系统架构师面试,PyMySQL模块安装指南

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

2401_84414763的博客 1016

海康VisionMaster与西门子PLC1200进行S7通信

通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......

haier123888的博客 1万+

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1068

python开源代码自学问题解决(requests+openpyxl+pymysql)

库的依赖完成了,下面进行后续的代码进一步阅读和学习。阅读和编写代码是提升个人编程技能的最好方法,课本上的东西没啥大用,基础一辈子都是基础,还是要多实践看看别人写的好例子好代码。

aa98865646的博客 2010

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

python 通过PYMYSQL使用MYSQL数据库方法,java面试jvm原理

面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。

1058

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python数据库操作 ---- pymysql教学_pymysql操作数据库

在执行execute()方法之后必须要commit()方法才能将数据插入到表中,这个设计到了事务的原子性问题,事务机制可以确保数据一致性,事务有4个属性:原子性、一致性、隔离性、持久性。可以简单的理解etchone()查询游标所在的一行数据,fetchall()查询当前游标至结束的所有行数据。在使用pymysql的前提就是又一个mysql数据库,这个数据库可以是本地数据库也可以是远程的数据库,创建数据库命令执行一次就可以,后面我们在创建的数据库中进行其他的操作,如果创建的数据已经存在程序会报错。

m0_74931199的博客 1004

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

一文带你了解Python中pymysql的使用

Connection类提供了三个方法: begin 开始事务, commit 提交事务, rollback 回滚事务,如果通过 sql 语句对数据库中的数据进行了修改, 则需要提交事务。rollback()为回退到上一步操作,若发生其他错误带来不可预知的错误,可以与try except联合起来一起使用,返回到语句没有执行的状态。连接好了数据库,我们需要创建一个游标用于模拟我们使用mysql的行为。关闭有close()方法,在程序结束时需要建立的连接即建立的游标资源释放掉,避免资源的浪费。

chinaherolts2008的博客 478

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python自学之旅

从网上,某宝,某acg国内最大爱好网站,搜索到了一期python全栈的视频教程。 感谢视频中的教学老师,以下会持续更新我目前学习到的进度。 因为有一点其他编程语言、模板语言和标记语言等以及web框架的一些基础(大学学过java,jsp,struts,但是毕业后没有在学习和使用了,只有当时学懂了,存着大概的概念。)。 现在同时看了3个阶段的视频。如果某个阶段的遇到看不懂的地方,会稍微...

aba0811的博客 187

pycharm第三方包pymysql无法使用Connection问题

原因:创建了一个名称为pymysql的。解决:将名称为pymysql的python文件改名,即可用。修改后。

m0_61331407的博客 1139

Python自学笔记之数据库管理

数据库概述 前面学习的内容中,我们通常把代码写在了.py结尾的文件中,也可以把程序中的一些内容存放到目录文件中,但是当我们要保存大量数据的时候,如果使用多个文档来保存,就不方便我们进行管理,因此我们要引入数据库来管理这些内容,本章我们就来了解一下数据库的相关内容。 1.什么是数据库 数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、...

Laborious_XDU的博客 1570

python 通过PYMYSQL使用MYSQL数据库方法

以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的。

2401_84048521的博客 762
fengzhidu_python
博客等级 码龄7年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值