PyMySQL

Python之pymysql详解 PyMySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 安装pymysql PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库。 PyMySQL是一个开源项目 :https://github.com/PyMySQL/PyMySQL 通过下面的命令来进行安装pymysql模块:... 阅读详情

准备工作

使用python程序操作MySQL数据库
安装pymysql第三方包: sudo pip3 install pymysql
安装第三方包pip3 install
卸载第三方包pip3 uninstall
pip3 list 查看使用pip命令安装的第三方包列表

①导入pymysql包: import pymysql

②创建连接对象:

调用pymysql模块中的connect()函数来创建连接对象,代码如下:
conn = connect(参数列表)
*参数host: 连接mysql主机,如果是本机是’localhost’
*参数port: 连接的mysql主机的端口,默认是3306
*参数user: 连接的用户名
*参数password: 连接的密码
*参数database: 数据库的名称
*参数charset: 通信采用的编码方式,推荐使用utf8

连接对象操作说明:
关闭连接:conn.close()
提交数据:conn.commit()
撤销数据:conn.rollback()

③获取游标对象

获取游标对象的目标就是要执行sql语句,完成对数据库的增删改查操作
调用连接对象cursor()方法获取游标对象
cur = conn.cursor()

游标操作说明:

使用游标执行SQL语句: execute(operation [parameters ]) 执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete、select等语句
获取查询结果集中的一条数据:cur.fetchone()返回一个元组, 如 (1,‘张三’)
获取查询结果集中的所有数据: cur.fetchall()返回一个元组,如((1,‘张三’),(2,‘李四’))
关闭游标: cur.close(),表示和数据库操作完成

---------pymysql完成数据的查询操作--------------

import pymysql
# 创建连接对象
conn = pymysql.connect(host='localhost', port=3306, user='root', password='mysql',database='python', charset='utf8')

# 获取游标对象
cursor = conn.cursor()

# 查询 SQL 语句
sql = "select * from students;"
# 执行 SQL 语句 返回值就是 SQL 语句在执行过程中影响的行数
row_count = cursor.execute(sql)
print("SQL 语句执行影响的行数%d" % row_count)

# 取出结果集中一行数据, 例如:(1, '张三')
# print(cursor.fetchone())

# 取出结果集中的所有数据, 例如:((1, '张三'), (2, '李四'), (3, '王五'))
for line in cursor.fetchall():
    print(line)

# 关闭游标
cursor.close()

# 关闭连接
conn.close()

***************注意点:port=3306 不能用引号 否则报错
***************报错内容:TypeError: %d format: a number is required, not str

------------------pymysql增删改-----------------

import pymysql

# 创建实例对象
conn = pymysql.connect(host='localhost',port=3306,user='root',password='mysql',database='jingdong',charset='utf8')

# 创建游标对象
cursor = conn.cursor()

try:
    # 添加sql语句
    # sql = "insert into student(name) values ('刘璐'),('王美丽');"
    # 删除sql语句
    # sql = "delete from student where id = 5;"
    # 修改sql语句
    sql = "update student set name = '王八' where id = 6;"
    # 执行sql语句
    row_count = cursor.execute(sql)
    print("sql 语句执行影响的行数%d" % row_count)
    # 提交数据到数据
    conn.commit()
except Exception as e:
    conn.rollback()


# 关闭游标
cursor.close()

# 关闭连接
conn.close()

*********与查的区别是:成功需要commit()提交 失败需要rollback()撤销

-----------防止SQL注入--------

SQL注入: 用户提交带有恶意的数据与SQL语句进行字符串方式拼接,
从而影响了SQL语句的语言,最终产生数据泄露现象

如何防止SQL注入:
SQL语言中的参数使用%s来占位,此处不是python中的字符串格式化操作
将SQL语句中%s占位所需要的参数存在一个列表中,把参数列表传递给execute方法中第二个参数

防止SQL注入的示例代码:


from pymysql import connect

def main():

    find_name = input("请输入物品名称:")

    # 创建Connection连接
    conn = connect(host='localhost',port=3306,user='root',password='mysql',database='jing_dong',charset='utf8')
    # 获得Cursor对象
    cs1 = conn.cursor()

    # 非安全的方式
    # 输入 ' or 1 = 1 or '   (单引号也要输入)
    # sql = "select * from goods where name='%s'" % find_name
    # print("""sql===>%s<====""" % sql)
    # # 执行select语句,并返回受影响的行数:查询所有数据
    # count = cs1.execute(sql)

    # 安全的方式
    # 构造参数列表
    params = [find_name]
    # 执行select语句,并返回受影响的行数:查询所有数据
    count = cs1.execute("select * from goods where name=%s", params)
    # 注意:
    # 如果要是有多个参数,需要进行参数化
    # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可
    # %s 不需要带引号

    # 打印受影响的行数
    print(count)
    # 获取查询的结果
    # result = cs1.fetchone()
    result = cs1.fetchall()
    # 打印查询的结果
    print(result)
    # 关闭Cursor对象
    cs1.close()
    # 关闭Connection对象
    conn.close()

if __name__ == '__main__':
    main()

说明:

execute方法中的 %s 占位不需要带引号

小结:

导包: import pymysql
创建连接对象: pymysql.connect(参数列表)
获取游标对象: cursor =conn.cursor()
执行SQL语句: row_count = cursor.execute(sql)
获取查询结果集: result = cursor.fetchall()
将修改操作提交到数据库: conn.commit()
回滚数据: conn.rollback()
关闭游标: cursor.close()
关闭连接: conn.close()

PyMySQL(一) :什么是PyMySQL 、如何安装PyMSQL 1、什么是PyMySQL 为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库。 PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库。 PyMySQL是一个开源项目 :https://github.com/PyMySQL/PyMySQL 环境要求: PyMySQL支持的python版本: - python2 - pyth... 阅读详情

相关推荐

【Python】PyMySQL

在我们敲下 这行代码之前,一个至关重要的问题摆在面前:当 Python 程序需要与一个远在网络另一端、甚至就在本地的 MySQL 服务器对话时,它们之间究竟发生了什么?这并非魔法,而是一套严谨、高效、历经考验的二进制通信协议在起作用。理解这套协议,就如同拥有了透视眼,能看穿 这类库的优雅封装,直达其工作的本质。本章的使命,就是剥去所有高级抽象的外壳,使用最原始的 Python 网络套接字(Socket)工具,手动模拟客户端与服务器的通信过程,让你从零开始,亲手构建起连接的桥梁。在数据库的世界里,客户端-

宅男很神经 1785

Python数据库编程之pymysql详解

文章目录前言一、pymsql的安装二、连接数据库三、创建和管理数据库四、创建和管理表 前言 学习之前务必安装MySQL并已启动相关服务,MySQL安装方法及查看初始密码见文章第一部分: https://blog.youkuaiyun.com/youngwyj/article/details/124293362?spm=1001.2014.3001.5502 一、pymsql的安装 在python3的环境中直接使用以下命令即可: pip install pymsql #或者 pip3 install pymysq

youngwyj的博客 4万+

PyMySQL KeyError:255

(下边有更新,这个是临时方法)在weibospider项目新建所有的表时遇到的错误: Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sqlalchemy/pool.py", line 1122, in ...

suyc 4865

用Python操作MySQL教程!干货满满!

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFlymSQLMySQLPostgreSQLInformixInterbaseOracleSybase …你可以访问Python数据库接口及API查看详细的支持数据库列表。

weixin_68789096的博客 5873

【conda 离线安装 package】之 pyMySQL (含教程)

本文是离线安装 pyMySQL package 的一个记录。

Let`s Pythonic 3792

告别调试烦恼:用Lattice Diamond手把手教你JTAG烧录FPGA(附SRAM/Flash模式详解)

本文详细介绍了使用Lattice Diamond软件进行JTAG烧录FPGA的全流程,包括SRAM临时调试和Flash固化的核心区别。从环境准备、硬件连接到文件准备、烧录模式选择,再到典型问题排查和高级技巧,手把手教你快速掌握FPGA烧录技术,提升开发效率。

weixin_42569329的博客 495

简单易懂!迅速掌握Python语言----操作MySQL数据库之pymysql模块教程(讲解+示例+代码,欢迎关注点赞收藏~)

pymysql是Python中的一个类库, 主要是通过python代码来操作SQL语句的,主要是对数据库的数据进行增删改查。

m0_56868937的博客 7383

利用Spm12进行fMRI数据分析:从预处理到结果解读的完整指南

本文提供了利用SPM12进行fMRI数据分析的完整流程指南,涵盖从数据预处理、统计建模到结果解读的全过程。详细介绍了在MATLAB环境下使用SPM12图形界面完成头动矫正、空间标准化等关键步骤的操作方法与避坑技巧,帮助神经科学研究者和心理学研究者高效处理功能磁共振成像数据并产出可靠结果。

weixin_29079671的博客 452

PyMysql

python使用pymysql对mysql进行增删查改操作

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 4134

图形学基础知识:着色(三)Rendering Pipeline与Shader

管线(Pipeline) 什么是管线? 管线我们可以理解为流水线,流水线大家都懂,就是工厂里面生产东西的一整套流程。例如饮料厂要生产饮料,需要洗瓶子,倒饮料,加盖,包装等等,这一整套过程就是流水线。那么我们要把一个三维场景渲染成一幅二维的图像,同样需要一个先干嘛再干嘛然后干嘛最后干嘛的过程,这个过程或流水线,我们就称之为管线。 实时渲染管线(Real-time Rendering Pipeline) 通过前面几篇的学习,我们知道了要把一个三维场景渲染成一幅二维的图像大致分为以下几个步骤: M.

王王王渣渣的博客 2532

基于STM32H750的便携式双通道示波器与信号发生器AFE设计

示波器和信号发生器是电子测量与嵌入式系统调试的基础仪器,其核心在于模拟前端(AFE)对宽动态范围、高精度采样与低失真输出的协同实现。原理上需兼顾输入信号调理(衰减/放大/偏置)、ADC/DAC接口匹配、触发同步及电源完整性设计。技术价值体现在以低成本器件达成±15V输入/±10V输出、16位等效采样精度与85kHz带宽的工程平衡。典型应用场景包括电机驱动波形观测、传感器信号验证、电源环路测试及通信电平分析。本方案聚焦STM32H750平台,深度融合硬件拓扑与片上资源特性,为嵌入式教学与原型开发提供可复现、易

weixin_35755188的博客 107

Python操作mysql数据库

关系型数据库:采用了关系模型来组织数据的数据库,如MySQL、PostgreSQL、Oracle数据库。非关系型数据库:以键值对存储,且结构不固定,可以减少一些时间和空间的开销,如MongoDB、Redis。

caixiangting的博客 1万+

Nornir自动化简单介绍-网络设备信息收集

作为网工,学会通过执行脚本,可以自动化的完成日常一些设备相关配置或信息收集等工作,可以说是事半功倍。 Nornir就是这样一个自动化网络运维工具。按照官网上的说明: Nornir是用python编写的自动化框架,可与python一起使用。Nornir旨在通过提供一个纯Python框架来解决这些问题。 详细参考: Github GitHub - nornir-automation/nornir: Pluggable multi-threaded framework with inventory .

Gun&rose 7804

pymysql的安装及使用

目录 一、什么是PyMySQL? 二、如何安装PyMySQL? 1、Pip install pymysql 常规安装 2、zip安装包 3、Whl包 4、pycharm引入pymyaql模块 三、Pymysql使用基本流程 1、要求 2、操作流程 3、操作流程具体代码 Python具有内置的SQLite支持。在早期Python版本一般都使用MySQLdb模块,但这个My...

珂鸣玉的博客 2万+

ROS2前置基础教程 | 小鱼教你用CMake依赖查找流程

上面我们用g++、make、cmake三种方式来编译ros2的C++节点。用cmake虽然成功了,但是CMakeLists.txt的内容依然非常的臃肿,我们需要将其进一步的简化。将上面的CmakLists.txt改成下面的样子 接着继续生成和编译 是不是非常的神奇,为什么可以浓缩成那么短的几句指令呢?find_package查找路径对应的环境变量如下。 打开终端,输入指令: 结果 观察PATH变量,你会发现赫然在其中,中的路径如果以或结尾,则自动回退到上一级目录,接着检查这些目录下的 cmake找到这些目录

生活不止眼前的苟且 7159

华为OD机试真题 新系统【Skill执行链完整性检测】

华为OD机试 新系统真题【Skill执行链完整性检测】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【Skill执行链完整性检测】

qq_45776114的博客 763

MySQLdb、Mysqlclient、PyMySQL 三个python的MySQL库的比较和总结

一.MySQLdb 1.介绍 MySQLdb又叫MySQL-python ,是 Python 连接 MySQL 的一个驱动,很多框架都也是基于此库进行开发,遗憾的是它只支持 Python2.x,而且安装的时候有很多前置条件,因为它是基于C开发的库,在 Windows 平台安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代的是它的衍生版本。 2.安装 由于本机是python3.6的环境,无法直接安装MySQLdb,因此选择放弃。但可以考虑装 Mysqlclient。 3.使用 资料传送门

weixin_48943299的博客 2万+

Android16 rk3576添加触摸点数上限到40个点

本文介绍了在Android 16系统上实现40点触摸支持的修改方案。相比Android 15,Android 16对API添加有更严格的要求,需要在MotionEvent.java中添加@FlaggedApi批注。主要修改包括:1)在input_framework.aconfig中定义flag;2)在MotionEvent.java中添加40个AXIS_GENERIC轴常量并添加批注;3)将32位指针ID处理改为64位适配;4)更新相关API文档。修改涉及多个核心文件,包括PointerController

tzj1058756809的博客 381

解决:ModuleNotFoundError: No module named ‘pymysql’

背景 在使用之前的代码时,报错: Traceback (most recent call last): File "xxx", line xx, in import pymysql ModuleNotFoundError: No module named 'pymysql' 翻译: ``` 追溯(最近一次通话): 文件“xxx”,第xx行,在 导入pymysql ModuleNotFoundError:没有名为“pymysql”的模块 ``` 原因 ......

nings666的博客 1万+

假人有限元模型

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pymysql 入门

PyMySQL是一个纯 Python 编写的 MySQL 客户端库,可以通过它轻松地在 Python 中连接并操作 MySQL 数据库。它兼容 MySQL 5.x 和 MariaDB,并且与 MySQL 官方提供的客户端接口(C API)兼容。PyMySQL 支持数据库连接、执行 SQL 查询、以及提取查询结果等功能。

HHX_01的博客 1449

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python2安装pymysql_Python安装PyMySQL

一、首先确定当前pthon版本C:\Users\10937>python -VPython 3.7.1二、确定你本地pip是否已安装C:\Users\10937>pipUsage:pip [options]Commands:install Install packages.download Download...

weixin_39829236的博客 1780

pymysql语法_PyMySQL的基本使用

什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。PyMySQL的安装pip3 install pymysql#pymysql模块,同属于套接字模块。PyMySQL的基本使用使用...

weixin_42109639的博客 2242

pymysql的使用方法

pymysql的安装以及使用方法大全

sheep55的博客 3356

PyMySQL 详解

PyMySQL是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存储过程、批量执行等。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 安装 pip install PyMySQL 创建数据库连接 import pymysql connection = pymysql.connect(host='localhost', port=3..

没有撤退可言. 5070
上一篇: Django项目_登录简单业务逻辑
下一篇: Git单人本地仓库操作
Python_zhou
博客等级 码龄7年 9粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值