[Python学习篇] Python PyMysql

news2024/11/16 1:46:36

什么是PyMysql

PyMysql是一个纯 Python 实现的 MySQL 客户端库,允许你在 Python 程序中与 MySQL 数据库进行交互。

安装PyMysql

PyMysql地址:https://pypi.org/project/PyMySQL/

pip install pymysql


使用PyMysql

连接mysql
import pymysql

# 数据库连接参数
host = '192.168.189.71'     # 数据库主机地址
port = 3306                 # 数据库端口
user = 'root'               # 数据库用户名
password = '123456'         # 数据库密码
database = 'test'           # 数据库名称
charset = 'utf8mb4'         # 编码格式

# 连接到数据库
connection = pymysql.connect(
    host=host,
    port=port,
    user=user,
    password=password,
    database=database,
    charset=charset,
    # cursorclass=pymysql.cursors.DictCursor # 使用字典类型游标
)

print("连接成功")
查询数据
# 创建游标对象
cursor = connection.cursor()

# 执行SQL查询
sql = "select * from table_test;"
cursor.execute(sql)

# 获取查询结果
results = cursor.fetchall()
for row in results:
    print(row)

# 关闭游标
cursor.close()

查询打印到的数据

  • 元组类型数据

  • 字典类型数据

添加数据
try:
    # 创建游标对象
    cursor = connection.cursor()
    
    # 编写sql语句
    sql = "insert into table_test (id, name, age) VALUES (%s, %s, '22')"
    values = (3, 'Spike')  # sql参数

    # 执行SQL插入
    cursor.execute(sql, values)
    # 提交事务
    connection.commit()
    print("数据插入成功")
except Exception as e:
    # 出现异常,回滚事务
    connection.rollback()
finally:
    # 关闭游标
    cursor.close()
    # 关闭连接
    connection.close()
更新数据
try:
    # 创建游标对象
    cursor = connection.cursor()
    
    # 编写sql语句
    sql = "UPDATE table_test SET age = %s WHERE id = %s"
    values = (30, 3)

    # 执行SQL
    cursor.execute(sql, values)
    # 提交事务
    connection.commit()
    print("数据更新成功")
except Exception as e:
    # 出现异常,回滚事务
    connection.rollback()
finally:
    # 关闭游标
    cursor.close()
    # 关闭连接
    connection.close()
删除数据
try:
    # 创建游标对象
    cursor = connection.cursor()

    # 编写sql语句
    sql = "DELETE FROM table_test WHERE id = %s"
    value = (3,)

    # 执行SQL
    cursor.execute(sql, value)
    # 提交事务
    connection.commit()
    print("数据删除成功")
except Exception as e:
    # 出现异常,回滚事务
    connection.rollback()
finally:
    # 关闭游标
    cursor.close()
    # 关闭连接
    connection.close()
使用上下文管理器

自动关闭数据库连接、自动关闭游标

import pymysql

# 数据库连接参数
host = '192.168.xxx.xxx'    # 数据库主机地址
port = 3306                 # 数据库端口
user = 'root'               # 数据库用户名
password = '******'         # 数据库密码
database = 'test'           # 数据库名称
charset = 'utf8mb4'         # 编码格式

# 使用上下文管理器连接到数据库
with pymysql.connect(
        host=host,
        port=port,
        user=user,
        password=password,
        database=database,
        charset=charset
) as connection:
    with connection.cursor() as cursor:
        # 编写sql语句
        sql = "insert into table_test (id, name, age) VALUES (%s, %s, '22')"
        values = (3, 'Spike')  # sql参数

        try:
            # 执行SQL
            cursor.execute(sql, values)
            # 提交事务
            connection.commit()
            print("执行成功")
        except Exception as e:
            print("程序异常")
            connection.rollback()

游标常用方法

执行一条sql语句

语法:

cursor.execute(query, args=None)

  • query是要执行的SQL语句
  • args是SQL语句中的参数

示例:

cursor.execute("insert into table_test (id, name, age) VALUES (%s, %s, '22')", (3, 'Spike'))
执行多条sql语句

语法:

cursor.executemany(query, args)

  • query是要执行的SQL语句
  • args是一个包含多组参数的列表。

示例:

sql = "INSERT INTO table_test (id, name, age) VALUES (%s, %s, %s)"
values = [(1, 'Tom', 20), (2, 'Jerry', 18), (3, 'Spike', 25)]
cursor.executemany(sql, values)
查询一条数据

语法:

cursor.fetchone()

示例:

result = cursor.fetchone()
print(result)
查询多条数据

语法:

cursor.fetchall()

示例:

results = cursor.fetchall()
for row in results:
    print(row)
查询返回结果中指定的行数

语法:

cursor.fetchmany(size)

示例:

# 获取查询结果中的前两行
results = cursor.fetchmany(2)
for row in results:
    print(row)
受影响的行数

语法:

cursor.rowcount

  • 例如执行 INSERT、UPDATE 或 DELETE 操作后影响的行数。

示例:

cursor.execute(sql, value)
# 受影响行数
print(cursor.rowcount)
获取最后插入行的ID

语法:

cursor.lastrowid

  • 获取最后插入行的ID(通常用于 AUTO_INCREMENT 字段)

示例:

cursor.execute(sql, value)
print(cursor.lastrowid)  # 输出最后插入行的ID

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1928559.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库redis命令作业九

1、安装redis,启动客户端、验证。 2、string类型数据的命令操作: (1) 设置键值: (2) 读取键值: (3) 数值类型自增1: (4) 数…

【单片机毕业设计选题24064】-基于阿里云的鱼塘水质检测系统

系统功能: 主控为STM32F103C8T6,通过PH值传感器、浑浊度传感器、温度传感器采集各项水质数据,系统可设定各参数 的阈值,超过设定的阈值将通过蜂鸣器响来提醒用户做出措施,同时通过ESP-12F WIFI模块将设备连接阿里云 物联网平台…

信通院全景图发布 比瓴科技领跑软件供应链安全,多领域覆盖数字安全服务

近日,中国信息通信研究院在2024全球数字经济大会—数字安全生态建设专题论坛正式发布首期《数字安全护航技术能力全景图》(以下简称全景图)。 比瓴科技入选软件供应链安全赛道“开发流程安全管控、交互式安全测试、静态安全测试、软件成分分…

rtf是什么格式的文件?rtf格式和word的区别是什么?

RTF是什么格式的文件? RTF(富文本格式,Rich Text Format)和Word文档(以.doc和.docx为扩展名的Microsoft Word文档)是两种常用的文本文件格式。它们在文件结构、兼容性、功能和使用场景等方面存在一些显著差异。 比如…

泰迪智能科技江西大数据实验室成功案例介绍说明

高校大数据实验室作为作为支撑高校人培方案实施的核心设施,实验室的建设一定要与学科建设、人才培养充分融合,是一个包含物理空间硬件资源软件资源课程内容的系统化工程。高校在实验室规划过程中,第一要务就是从学科定位出发、结合学校的特色…

ASP.NET MVC-制作可排序的表格组件-PagedList版

环境: win10 参考: 学习ASP.NET MVC(十一)——分页 - DotNet菜园 - 博客园 https://www.cnblogs.com/chillsrc/p/6554697.html ASP.NET MVCEF框架实现分页_ef 异步分页-CSDN博客 https://blog.csdn.net/qq_40052237/article/details/106599528 本文略去…

分布式IO系统BL201 Profinet耦合器

BL201耦合器是一个数据采集和控制系统,基于强大的32 位微处理器设计,采用Linux操作系统,是一种模块化的分布式I/O系统。该系统由3部分组成:现场总线耦合器和各种类型的(数字和模拟信号以及特殊功能)I/O模块…

部署k8s 1.28.9版本

继上篇通过vagrant与virtualBox实现虚拟机的安装。笔者已经将原有的vmware版本的虚拟机卸载掉了。这个场景下,需要重新安装k8s 相关组件。由于之前写的一篇文章本身也没有截图。只有命令。所以趁着现在。写一篇,完整版带截图的步骤。现在行业这么卷。离…

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

前言 我们在编写上位机与倍福PLC通信的过程中,有时候我们没有真实的Plc,但是我们又想提前测试与倍福PLC的通信,那么这个时候我们就可以使用倍福的仿真软件模拟PLC,然后我们上位机就可以与仿真PLC进行通信了,下面进行详细介绍: 1、下载并安装倍福PLC编程软件TwinCAT 安…

Uniapp自定义动态加载组件(2024.7更新)

1.本次介绍如何使用uniapp实现自定义动态加载Loading的组件,可以gif格式,也可以mp4格式等; 编写自定义Loading组件(CustomLoader.vue);组件中含有“动态接收图片路径”,“10秒超时未false则自动断开关闭Loading”;在全…

基于STC8H4K64TL单片机的触摸功能调试

基于STC8H4K64TL单片机的触摸功能调试 STC8H4K64TL单片机介绍STC8H4K64TL单片机管脚图(48个引脚)STC8H4K64TL单片机串口仿真与串口通信STC8H4K64TL单片机管脚图(32个引脚)STC8H4K64TL单片机管脚图(20个引脚)STC8H系列单片机管脚说明STC8H系列单片机I/O口STC8H系列单片机I…

在MoneyPrinterPlus中使用本地chatTTS语音模型

之前MoneyPrinterPlus在批量混剪,一键AI生成视频这些功能上的语音合成功能都用的是云厂商的语音服务,比阿里云,腾讯云和微软云。 云厂商虽然提供了优质的语音服务,但是用起来还是要收费。 为了各位小伙伴的钱包,现在特意给Money…

基于二次规划优化的OFDM系统PAPR抑制算法的matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于二次规划优化的OFDM系统PAPR抑制算法的matlab仿真. 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 (完整程序运行后无水印)…

【Springboot】新增profile环境配置应用启动失败

RT 最近接手了一个新的项目,为了不污染别人的环境,我新增了一个自己的环境配置。结果,在启动的时候总是失败,就算是反复mvn clean install也是无效。 问题现象 卡住无法进行下一步 解决思路 由于之前都是能启动的&#xff0c…

zookeeper+kafka的消息队列

zookeeperKafka 两个都是消息队列的工具 消息队列 出现原因:生产者产生的消息与消费者处理消息的效率相差很大。为了避免出现数据丢失而设立的中间件。 在消息的生产者与消费之间设置一个系统,负责缓存生产者与消费者之间的消息的缓存。将消息排序。 优…

nginx生成自签名SSL证书配置HTTPS

一、安装nginx nginx必须有"--with-http_ssl_module"模块 查看nginx安装的模块: rootecs-7398:/usr/local/nginx# cd /usr/local/nginx/ rootecs-7398:/usr/local/nginx# ./sbin/nginx -V nginx version: nginx/1.20.2 built by gcc 9.4.0 (Ubuntu 9.4.0…

MySQL之触发器

1,创建表 CREATE TABLE Product (Id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(20) NOT NULL,Function VARCHAR(50),Company VARCHAR(20) NOT NULL,Address VARCHAR(20) ); CREATE TABLE Operate (Op_id INT(10) NOT NULL AUTO_INCREMENT PRIMAR…

Leetcode—146. LRU 缓存【中等】(shared_ptr、unordered_map、list)

2024每日刷题(143) Leetcode—146. LRU 缓存 先验知识 list & unordered_map 实现代码 struct Node{int key;int value;Node(int key, int value): key(key), value(value) {} };class LRUCache { public:LRUCache(int capacity): m_capacity(capa…

Spring Boot集成qwen:0.5b实现对话功能

1.什么是qwen:0.5b? 模型介绍: Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。 硬件要求:…

SWDIO管脚作为GPIO

下面是使用FRDM-K32L2B3开发板和SDK中的frdmk32l2b_gpio_led_output程序做了一些测试,configure SWDIO pin as GPIO pin的流程。 查看手册,找到SWDIO对应的管脚,可以看到PTA3对应的SWDIO管脚。 2.修改Demo程序,在程序中设置SWDIO…