pymysql的使用

article/2025/11/8 7:17:28

pymysql是从Python连接到MySQL数据库服务器的接口,其官方文档为:https://pymysql.readthedocs.io/en/latest/

安装:pip install pymysql

对于数据库的操作,我们一般是这样的操作:
步骤1:连接数据库
步骤2:数据库的操作(增删改查)
步骤3:关闭数据库连接

以下是pymysql经常被用到的一些方法

方法描述
pymysql.connect()connect()方法返回要给数据库连接对象,参数可以传入很多,常用的参数有:host、port、user、password、database、charset,connect()创建了连接对象,执行完sql操作后,必须使用close()关闭
close()数据库连接对象的一个方法,用于关闭数据库连接
cursor()数据库连接对象的一个方法,用于获取游标对象,游标对象的execute(sql语句)方法可以执行sql语句
execute(sql)游标对象的一个方法,可以执行sql语句
commit()提交到数据库,数据库连接对象的一个方法,如果对表数据有修改的时候,就需要将修改提交到数据库,否则修改没有生效
rollback()回滚已提交的内容,,数据库连接对象的一个方法,依据事务的原子性 ,提交要么全部生效,要么全不生效,如果遇到异常,需要对已提交的内容进行回滚

数据库连接

方法描述
pymysql.connect()connect()方法返回要给数据库连接对象,参数可以传入很多,常用的参数有:host、port、user、password、database、charset,connect()创建了连接对象,执行完sql操作后,必须使用close()关闭
close()数据库连接对象的一个方法,用于关闭数据库连接
  • host:mysql服务器地址
  • port:mysql服务器连接端口,默认值为3306
  • user:用户名
  • password:密码
  • database:数据库名称
  • charset:编码方式,推荐使用"utf8mb4"

简单示例:

import pymysql# 建立连接
conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="mysql",charset="utf8mb4")# 关闭连接
conn.close()

数据库操作

CRUD操作

mysql的操作一般归纳为数据库、表、表数据的增删改查

功能描述
创建表create table 表名 (column_name column_type);
删除表drop table 表名;
查询表数据select 字段名1,字段名2,…,字段名n from 表名 where xxx [limit n][offset m];
插入表数据insert into 表名(字段名1,字段名2,…,字段名n) values(值1,值2,…,值n),(值21,值22,…,值2n)… ;
更新表数据update 表名 set 字段名1=新值1,字段名2=新值2,…,字段名n=新值n where xxx;
删除表数据delete from 表名 where xxx;

示例:

import pymysql# 建立连接
conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="test",charset="utf8mb4")
# 执行操作(先获取游标对象,再执行sql语句)
cursor = conn.cursor()  # 获取游标对象cursor.execute("show tables;")
print(f"当前test库的表有(创建表前):{cursor.fetchall()}")
# 创建表
creat_table_sql = """create table person(`id` int unsigned auto_increment primary key,`name` varchar(40) not null,`birthday` date);
"""
cursor.execute(creat_table_sql)
cursor.execute("show tables;")
print(f"当前test库的表有(创建表后):{cursor.fetchall()}\n")# 插入表数据
cursor.execute("insert into person(name, birthday) values('wen', '2001-09-23'), ('xiaoba', '1998-04-17');")
conn.commit()   # 提交记录# 查询表数据
cursor.execute("select * from person")
print(f"person插入数据后表内容为:{cursor.fetchall()}\n")# 更新表数据
cursor.execute("update person set birthday='2001-12-17' where name='xiaoba';")
conn.commit()
cursor.execute("select * from person")
print(f"person更新数据后表内容为:{cursor.fetchall()}\n")# 删除表数据
cursor.execute("delete from person where name='wen'")
conn.commit()
print(f"person删除数据后表内容为:{cursor.fetchall()}\n")# 关闭连接
conn.close()

执行结果为:

当前test库的表有(创建表前):()
当前test库的表有(创建表后):(('person',),)person插入数据后表内容为:((1, 'wen', datetime.date(2001, 9, 23)), (2, 'xiaoba', datetime.date(1998, 4, 17)))person更新数据后表内容为:((1, 'wen', datetime.date(2001, 9, 23)), (2, 'xiaoba', datetime.date(2001, 12, 17)))person删除数据后表内容为:()
查询操作

游标对象提供了3种获取查询记录的方法

方法描述
fetchone()获取单条记录(元组形式)
fetchmany(n)获取n条记录 (元组形式)
fetchall()获取所有结果记录(元组形式)

示例:

import pymysql# 建立连接
conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="test",charset="utf8mb4")
# 执行操作(先获取游标对象,再执行sql语句)
cursor = conn.cursor()  # 获取游标对象cursor.execute("select * from person where birthday>='2000-01-01'")
result_one = cursor.fetchone()
print(type(result_one))
print(f"fetchone()查询到的内容:{result_one}\n")cursor.execute("select * from person where birthday>='2000-01-01'")
result_3 = cursor.fetchmany(3)
print(type(result_3))
print(f"fetchmany(3)查询到的内容:{result_3}\n")cursor.execute("select * from person where birthday>='2000-01-01'")
result_all = cursor.fetchall()
print(type(result_all))
print(f"fetchall()查询到的内容:{result_all}")# 关闭连接
conn.close()

表内容为:
在这里插入图片描述

执行结果为:

<class 'tuple'>
fetchone()查询到的内容:(1, 'wen', datetime.date(2001, 9, 23))<class 'tuple'>
fetchmany(3)查询到的内容:((1, 'wen', datetime.date(2001, 9, 23)), (3, '张三', datetime.date(2012, 7, 9)), (5, 'harry', datetime.date(2013, 7, 9)))<class 'tuple'>
fetchall()查询到的内容:((1, 'wen', datetime.date(2001, 9, 23)), (3, '张三', datetime.date(2012, 7, 9)), (5, 'harry', datetime.date(2013, 7, 9)), (6, 'heng李', datetime.date(2004, 11, 26)))

执行事务

在增加、修改、删除表数据的时候,并不是说实时更新数据库的,当前连接对数据库的操作,要么全做,要么全不做。
pymysql提供了commit()和rollback()这2个方法

功能描述
commit()将游标的所有更新操作进行提交
rollback()回滚当前游标的所有操作

以下是没有执行commit()方法的示例:

import pymysql# 建立连接
conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="test",charset="utf8mb4")
# 执行操作(先获取游标对象,再执行sql语句)
cursor = conn.cursor()  # 获取游标对象# 插入表数据
cursor.execute("insert into person(name, birthday) values('harry', '2004-11-23'), ('heng李', '1983-04-28');")# 更新表数据
cursor.execute("update person set birthday='2001-12-17' where name='xiaoba';")# 删除表数据
cursor.execute("delete from person where name='wen'")# 查询表数据
cursor.execute("select * from person")
print(f"person表内容为:{cursor.fetchall()}\n")# 关闭连接
conn.close()

控制台打印结果为:

person表内容为:((2, 'xiaoba', datetime.date(2001, 12, 17)), (3, '张三', datetime.date(2012, 7, 9)), (9, 'harry', datetime.date(2004, 11, 23)), (10, 'heng李', datetime.date(1983, 4, 28)))

test数据库的person表在脚本执行前后如图:
在这里插入图片描述
我们看到,在该没有进行commit的脚本中,控制台打印的数据是更新后的数据,但是实际去mysql服务器查询的时候,脚本执行前后,数据并没有变化,可以判断出:游标对象对表数据的修改并没有在表中实际生效

使用了commit()方法

import pymysql# 建立连接
conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="test",charset="utf8mb4")
# 执行操作(先获取游标对象,再执行sql语句)
cursor = conn.cursor()  # 获取游标对象# 插入表数据
cursor.execute("insert into person(name, birthday) values('harry', '2004-11-23'), ('heng李', '1983-04-28');")# 更新表数据
cursor.execute("update person set birthday='2001-12-17' where name='xiaoba';")# 删除表数据
cursor.execute("delete from person where name='wen'")
# 将修改内容提交到数据库
conn.commit()# 查询表数据
cursor.execute("select * from person")
print(f"person表内容为:{cursor.fetchall()}\n")# 关闭连接
conn.close()

执行后:
控制台打印内容为:

person表内容为:((2, 'xiaoba', datetime.date(2001, 12, 17)), (3, '张三', datetime.date(2012, 7, 9)), (11, 'harry', datetime.date(2004, 11, 23)), (12, 'heng李', datetime.date(1983, 4, 28)))

mysql查询:
在这里插入图片描述
对比未使用commit()的场景,mysql查询person表的时候,person表内容更新了
rollback()方法一般是用于执行表操作错误后,对已更新的内容进行回滚(如果已经commit()成功的内容,就不回滚,一般来说服,数据库操作均使用try-catch-finally去兼容异常

import pymysqltry:# 建立连接conn = pymysql.connect(host="localhost",port=3306,user="root",password="wen",database="test",charset="utf8mb4")# 执行操作(先获取游标对象,再执行sql语句)cursor = conn.cursor()  # 获取游标对象# 更新表数据cursor.execute("update person set birthdaye='2001-12-17' where name='张三';")# 提交修改conn.commit()
except Exception as e:# 回滚事务print(e)print("即将对数据进行回滚")conn.rollback()
finally:# 关闭连接conn.close()

执行结果为:

(1054, "Unknown column 'birthdaye' in 'field list'")
即将对数据进行回滚

http://chatgpt.dhexx.cn/article/yOr42eLm.shtml

相关文章

python的pymysql模块安装与使用

文章目录 一、pymysql的安装&#xff1a;二、pymysql基本控制函数&#xff1a;三、数据库数据的添加&#xff1a;四、数据库数据的删除&#xff1a;五、数据库数据的修改&#xff1a;六、数据库数据的批量添加&#xff1a;七、数据库数据的查询(取出)&#xff1a; 一、pymysql的…

在pycharm里安装pymysql

1、打开pycharm&#xff0c;进入terminal终端模式&#xff0c;输入pip install pymysql&#xff08;pip3 install pymysql&#xff09;

Py之PyMySQL:Python库之PyMySQL的简介、安装、使用方法之详细攻略

Py之PyMySQL&#xff1a;Python库之PyMySQL的简介、安装、使用方法之详细攻略 目录 PyMySQL的简介 PyMySQL的安装 PyMySQL的使用方法 PyMySQL的简介 PyMySQL包包含一个纯Python MySQL客户端库。PyySQL的目标是对MySQL LDAP进行替换&#xff0c;并对CPython、PyPy和IrPython进…

pymysql模块安装后,import pymysql找不到?

经常遇到这样的问题&#xff0c;windows里 cmd安装好了pymysql后&#xff0c;在开发时&#xff0c;import引入找不到模块为什么呢&#xff1f; cmd安装好的包&#xff0c;其实在真实的环境里已经安装好了&#xff0c;但是PyCharm工具需要手动加载一下。详细安装步骤如下&#…

pymysql安装包下载

运行pycharm&#xff0c;点击文件&#xff0c;点击设置&#xff0c;点击项目&#xff0c;选择项目下的python解释器&#xff0c;点击号&#xff0c;搜索pymysql&#xff0c;下载安装包即可。

PyMySQL的基本使用

我使用pymysql出现了以下的错误 python-module pymysql has no attribute connect 一出错 我本能的想去看下是不是我没连接成功 然后 pip3 install pymysql 不要起import的包名作为文件名啊&#xff01;&#xff01;&#xff01; 因此&#xff0c;我总结了下pymysql的基本使…

windows下Python安装pymysql

# 安装pymysql命令 # 从github 下载pymysql 安装包 # 下载地址&#xff1a;https://github.com/PyMySQL/PyMySQL # 解压下载文件&#xff0c;不用打开python交互界面&#xff0c;cd到解压文件所在目录 # 运行 python setup.py install # 打开python交互界面&#xff0c; # 运…

Python安装pymysql

Python安装pymysql 环境&#xff1a;jupyter Notebook(Anaconda) 1. 未安装pymysql 2. 打开cmd(命令提示符) 3. 出现错误 开始我简单粗暴的直接在cmd中输入&#xff0c;然后出现了404错误&#xff0c;提示我conda的配置状态权限有问题。&#xff08; 第13行中view your conf…

Windows下安装PyMysql(图文详解)

第一步&#xff0c;运行 cmd CD到你的python的安装目录 C:\>cd C:\Users\Administrator\AppData\Local\Programs\Python\Python38\ 这是我自己的&#xff0c;你的你自己找 第二步&#xff0c;CD到 Scripts目录下 cd Scripts 第三步&#xff0c;开始安装pymysql pip in…

3. MySQL之PyMySQL的安装使用

上篇文章基于mysql-connector-python来实现数据库的基本操作。本文基于PyMySQL来连接并使用数据库。 1. PyMySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库&#xff0c;Python2 中则使用 mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范&#xff0c;并…

python3安装pymysql(pycharm工具)

前言&#xff1a; python连接mysql数据库需要导入mysql,python2使用的是MySQLdb&#xff0c;python3使用的是pymysql 参考文档&#xff1a;Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程 具体安装方案&#xff1a; 一、pycahrm操作 1、安装PyMySQL 2、添加pymysql…

安装 pymysql 的方法

安装 pymysql 的方法 方法1&#xff1a; 使用pip 安装器 windows: pip install pymysql linux: sudo pip install pymysql 方法2 &#xff1a; 下载资源安装&#xff1a; 1、离线安装包地址为&#xff1a; https://pypi.doubanio.com/simple/pymysql/ 从里面自己选择合适…

PyMySQL模块安装指南

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;目前从事DBA及程序编程 &#xff08;Web\java\Python&#xff09;工作&#xff0c;主要服务于生产制造 现拥有 Oracle 11g OCP/OCM、 Mysql、Oceanbase&#xff08;OBCA&#xff09;认证 分布式TBase\TDSQL数据库、国…

pymysql的安装及操作

1、pymysql的安装 1.1 conda环境解释器在线安装 以管理员身份运行终端或者使用Anaconda Powershell Prompt并以管理员身份运行 conda install -c conda-forge pymysql注意&#xff1a;conda安装pymysql后&#xff0c;只有使用conda解释器才可以调用 1.2 Python环境在线安装 1、…

安装pymysql

安装pymysql 1、检查Python版本 python2、检查pip pip --version3、如果没有pip&#xff0c;安装pip curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 sudo python get-pip.py # 运行安装脚本 或者 sudo python3 get-pip.py4、安装pymysql p…

oracle sql语句大全

oracle常用sql语句函数 sql执行顺序 •FROM •WHERE •GROUP BY •HAVING •SELECT •DISTINCT •UNION •ORDER BY SQL语言分为五大类 DDL(数据定义语言 Data Definition Language) - Create、Alter、Drop 这些语句自动提交&#xff0c;无需用Commit提交。 DQL(数据查询…

数据库基本SQL语句大全

数据库基本----SQL语句大全一、基础 1、说明&#xff1a;创建数据库 Create DATABASE database-name 2、说明&#xff1a;删除数据库 drop database dbname 3、说明&#xff1a;备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpd…

常用SQL语句总结

文章目录 SQL介绍登录数据库数据库操作数据库的增删改查操作数据表的增删改查操作 数据操作插入数据修改数据删除数据查询数据存储过程流程控制三种循环while循环repeat循环loop循环 触发器函数索引 性能分析用户管理权限管理踩过的坑 SQL介绍 SQL是一种结构化的数据库查询和程…

SQL语句知识大全

目录导航 一、SQL简介1.什么是数据库2.数据库分类3.SQL 是什么&#xff1f;4.SQL 能做什么&#xff1f;5.RDBMS 二、基础语法1.创建数据库2.删除数据库3.创建表4.删除新表5.增加一个列6.添加主键7.创建索引8.创建视图9.几个简单的table操作的sql语句**选择&#xff1a;****插入…

SQL常用语句(大全)

我们先看一下表的结构&#xff1a; -- sql语句创建表 CREATE TABLE student2 (id int(11) NOT NULL AUTO_INCREMENT,stuname varchar(10) NOT NULL,class varchar(20) NOT NULL,sex int(11) NOT NULL,major varchar(20) NOT NULL,mathstore int(11) DEFAULT NULL,yuwenstore i…