Python 对MySQL进行增删改查等一系列操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Python 对MySQL进行增删改查等一系列操作

一、Python安装MySQL连接驱动器

pip install pymysql

9cd375a3f61beef589546b8bfed2e69.png



二、pymysql操作说明

前言:


Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。由于DB-API 为不同的数据库提供了一致的访问接口, 在不同的数据库之间移植代码成为一件轻松的事情。

fcfcc177623e443d0f4bc3c674ebd3c.png



1、导入pymysql模块

import pymysql

2、创建连接对象

conn = pymysql.connect(参数列表)

参数说明:


host: 数据库主机名.默认是用本地主机(localhost)

user: 数据库登陆名.默认是当前用户

passwd: 数据库登陆的秘密.默认为空

db: 要使用的数据库名.没有默认值

port: MySQL服务使用的TCP端口.默认是3306

charset: 数据库编码,推荐UTF-8

连接connect对象

close():关闭此connect对象, 关闭后无法再进行操作,除非再次创建连接

commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚

rollback():取消当前事务

cursor():创建游标对象

返回对象操作

conn.close() 关闭连接

conn.commit() 提交连接

conn.rollback() (撤销数据)回滚事务

3、获取游标对象

获取游标对象目标识执行SQL语句,对增删改查(curd)操作


cur = conn.cursor()

游标对象属性和方法


1)常用方法

close():关闭此游标对象

fetchone():得到结果集中的一条数据,返回一个元祖(1,“李四”)

fetchmany([size=cursor.arraysize]):得到结果集的下几行

fetchall():得到结果集中所有数据,返回一个元祖((1,“李四”),(2,“王四”))

excute(sql[,args]):使用游标执行SQL语句,执行一个数据库查询或命令

excutemany(sql,args):执行多个数据库查询或命令

2)常用属性:

connection:创建此游标对象的数据库连接

arraysize:使用fetchmany()方法一次取出多少条记录,默认为1

lastrowid:相当于PHP的last_inset_id()

3)其他方法:

iter():创建一个可迭代对象(可选)

next():获取结果集的下一行(如果支持迭代的话)

nextset():移到下一个结果集(如果支持的话)

callproc(func[,args]):调用一个存储过程

setinputsizes(sizes):设置输入最大值(必须有,但具体实现是可选的)

setoutputsizes(sizes[,col]):设置大列 fetch 的最大缓冲区大小

4)其他属性:

description:返回游标活动状态(包含7个元素的元组):(name,type_code,display_size,internal_size,precision,scale,null_ok)只有 name 和 type_cose 是必需的

rowcount:最近一次 execute()创建或影响的行数

messages:游标执行后数据库返回的信息元组(可选)

rownumber:当前结果集中游标所在行的索引(起始行号为 0)

4、查询一条数据

fetchone():得到结果集中的一条数据,返回一个元祖(1,“李四”)


# 1. 导入pymysql模块
import pymysql
# 2. 创建连接对象
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host="localhost",
                       port=3306,
                       user="root",
                       password="*****",
                       database="python41",
                       charset="utf8"
                       )
# 3.获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql,之前在mysql客户端如何编 写sql,在python程序里面还怎么编写
sql = "select * from students;"
# 4. 执行sql语句
cursor.execute(sql)
# 获取查询结果,返回的数据类型是一个元组:(1,张三)
row = cursor.fetchone()
print(row)
# 5.关闭游标
cursor.close()
# 6.关闭连接
conn.close()

5、查询多条数据

fetchall():得到结果集中所有数据,返回一个元祖((1,“李四”),(2,“王四”))


# 1. 导入pymysql模块
import pymysql
# 2. 创建连接对象
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host="localhost",
                       port=3306,
                       user="root",
                       password="****",
                       database="python41",
                       charset="utf8"
                       )
# 3.获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 准备sql,之前在mysql客户端如何编 写sql,在python程序里面还怎么编写
sql = "select * from students;"
# 4. 执行sql语句
cursor.execute(sql)
# 获取查询结果,返回的数据类型是一个元组:((1,'张三'),(2,'李四"))
rows = cursor.fetchall()
for row in rows:
    print(row)
    # (1, '张三')
    # (2, '李四")
# 5.关闭游标
cursor.close()
# 6.关闭连接
conn.close()

6、对数据进行增删改操作

conn.commit() 提交连接

conn.rollback() (撤销数据)回滚事务


# 1. 导入pymysql模块
import pymysql
# 2. 创建连接对象
# host:连接的mysql主机,如果本机是’localhost’
# port:连接的mysql主机的端口,默认是3306
# database:数据库的名称
# user:连接的用户名
# password:连接的密码
# charset:通信采用的编码方式,推荐使用utf8
conn = pymysql.connect(host="localhost",
                       port=3306,
                       user="root",
                       password="****",
                       database="python41",
                       charset="utf8"
                       )
# 3.获取游标,目的就是要执行sql语句
cursor = conn.cursor()
# 增加操作
sql = "insert into classes(name) values('小明)"
# 修改操作
# sql = "update classes set name = '小红' where id = 2"
# 删除操作
# sql = "delete from classes where id=2"
try:
    # 4. 执行sql语句
    cursor.execute(sql)
    # 增删改都必须提交数据
    conn.commit()
except:
    # 如果报错就对修改的数据进行撤销,表示数据回滚
    conn.rollback()
# 5.关闭游标
cursor.close()
# 6.关闭连接
conn.close()


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
88 12
|
1月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
273 15
|
2月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
84 20
|
3月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
84 1
|
3月前
|
关系型数据库 MySQL
MySQL表的增删改查(基础篇详细详解)
MySQL表的增删改查(基础篇详细详解)
64 5
|
3月前
|
关系型数据库 MySQL 数据库
mysql的增删改查
本文介绍了MySQL数据库中进行增删改查操作的基本语法和注意事项,包括如何添加、修改和删除数据。
111 2
|
4月前
|
SQL 关系型数据库 MySQL
30天拿下Python之使用MySQL
30天拿下Python之使用MySQL
59 0
|
4月前
|
关系型数据库 MySQL 数据管理
pymysql:Python操作MySQL数据库的又一利器
pymysql:Python操作MySQL数据库的又一利器
44 0
|
4月前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
212 0
|
21小时前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决