PyMySQL的基本使用

article/2025/11/8 9:26:03

我使用pymysql出现了以下的错误

python-module 'pymysql' has no attribute 'connect'

一出错 我本能的想去看下是不是我没连接成功 然后 pip3 install pymysql
不要起import的包名作为文件名啊!!!

因此,我总结了下pymysql的基本使用

一、PyMySQL介绍

PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中是使用mysqldb。

PyMySQL安装

pip3 install pymysql

创建链接的基本使用 

# 导入pymysql模块
import pymysql# 连接database
conn = pymysql.connect(host=“你的数据库地址”,user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
# 得到一个可以执行SQL语句并且将结果作为字典返回的游标
#cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 定义要执行的SQL语句
sql = """
CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;  #注意:charset='utf8' 不能写成utf-8
"""# 执行SQL语句
cursor.execute(sql)# 关闭光标对象
cursor.close()# 关闭数据库连接
conn.close()

在建链接之前,我们需要做好一些前期工作:建库建表

下面例子中  我将使用我建好的库:db= 'xing'

建好的userinfo表

简单验证功能

# pip3 install pymysql
import pymysqluser=input('user>>: ').strip()
pwd=input('password>>: ').strip()# 建立链接
conn=pymysql.connect(host='192.168.0.103',#我的IP地址port=3306,   # 不是字符串不需要加引号。user='root',password='123',db='xing',charset='utf8'
)# 拿到游标
cursor=conn.cursor()# 执行sql语句sql='select * from userinfo where user = "%s" and pwd="%s"' % (user, pwd)
print(sql)
res=cursor.execute(sql)
print(res)cursor.close()
conn.close()# 进行判断
if res:print('登录成功')
else:print('登录失败')

输出结果:

但是会有以下问题:输入的SQL 语句被注释了

或者是

 

这个时候之后 我们可以这样解决

execute帮我们做字符串拼接# 将以下代码
sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
res=cursor.execute(sql)
# 改为
sql="select * from userinfo where name=%s and password=%s" #%s需要去掉引号,pymysql会自动加上res=cursor.execute(sql,[user,pwd])

 输出结果:

二、增删改查操作

添加多条数据

import pymysqlconn = pymysql.connect(host='192.168.0.103',port=3306,user='root',password='123',database='xing',charset='utf8'
)
# 获取一个光标
cursor = conn.cursor()# 定义要执行的sql语句
sql = 'insert into userinfo(user,pwd) values(%s,%s);'
data = [('july', '147'),('june', '258'),('marin', '369')
]
# 拼接并执行sql语句
cursor.executemany(sql, data)# 涉及写操作要注意提交
conn.commit()# 关闭连接
cursor.close()
conn.close()

输出结果:

插入单条数据

import pymysql
conn =pymysql.connect(host ='192.168.0.103',port = 3306,user = 'root',password ='123',database ='xing',charset ='utf8'
)
cursor =conn.cursor()  #获取一个光标
sql ='insert into userinfo (user,pwd) values (%s,%s);'name = 'wuli'
pwd = '123456789'
cursor.execute(sql, [name, pwd])
conn.commit()
cursor.close()
conn.close()

输出结果:

 

获取最新插入数据 (最后一条)

import pymysql# 建立连接
conn = pymysql.connect(host="192.168.0.103",port=3306,user="root",password="123",database="xing",charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "insert into userinfo (user, pwd) values (%s, %s);"
name = "wuli"
pwd = "123456789"
# 并执行SQL语句
cursor.execute(sql, [name, pwd])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接# 获取最新的那一条数据的ID
last_id = cursor.lastrowid
print("最后一条数据的ID是:", last_id)cursor.close()
conn.close()

输出结果为:(因为我之前插入多条记录时,多运行了两次,所有结果下面的这个)

删除操作

import pymysql# 建立连接
conn = pymysql.connect(host="192.168.0.103",port=3306,user="root",password="123",database="xing",charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "delete from userinfo where user=%s;"
name = "june"
# 拼接并执行SQL语句
cursor.execute(sql, [name])
# 涉及写操作注意要提交
conn.commit()
# 关闭连接cursor.close()
conn.close()

输出结果是:

更改数据

import pymysql# 建立连接
conn = pymysql.connect(host="192.168.0.103",port=3306,user="root",password="123",database="xing",charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql = "update userinfo set pwd=%s where user=%s;"
# 拼接并执行SQL语句
cursor.execute(sql, ["july", "july"])# 涉及写操作注意要提交
conn.commit()# 关闭连接
cursor.close ()
conn.close ()

三、查询数据

fetch数据

import pymysqlconn = pymysql.connect (host='192.168.0.103',port=3306,user='root',password='123',database='xing',charset='utf8'
)
# 获取一个光标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 返回字典数据类型# 定义将要执行的sql语句
sql = 'select user,pwd from userinfo;'
# 拼接并执行sql语句
cursor.execute(sql)# 取到查询结果
ret1 = cursor.fetchone()  # 取一条
ret2 = cursor.fetchmany(3)  # 取三条
ret3 = cursor.fetchone()  # 取一条cursor.close()
conn.close()print(ret1)
print(ret2)
print(ret3) 
# 可以获取指定数量的数据
cursor.fetchmany(3)
# 光标按绝对位置移动1
cursor.scroll(1, mode="absolute")
# 光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode="relative")
 

数据回滚

import pymysql# 建立连接
conn = pymysql.connect(host="192.168.0.103",port=3306,user="root",password="123",database="xing",charset="utf8"
)
# 获取一个光标
cursor = conn.cursor()
# 定义将要执行的SQL语句
sql1 = "insert into userinfo (user, pwd) values (%s, %s);"
sql2 = "insert into hobby (id, hobby) values (%s,%s);"
user = "july1"
pwd = "july1"
id = "我是错误的id"  #id = "3"
hobby = "打游戏"
try:# 拼接并执行SQL语句cursor.execute(sql1, [user, pwd])print(sql1)cursor.execute(sql2, [id, hobby])  # 报错的SQL语句# 涉及写操作注意要提交conn.commit()
except Exception as e:print(str(e))# 有异常就回滚conn.rollback()# 关闭连接
cursor.close()
conn.close()


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

相关文章

windows下Python安装pymysql

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

Python安装pymysql

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

Windows下安装PyMysql(图文详解)

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

3. MySQL之PyMySQL的安装使用

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

python3安装pymysql(pycharm工具)

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

安装 pymysql 的方法

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

PyMySQL模块安装指南

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

pymysql的安装及操作

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

安装pymysql

安装pymysql 1、检查Python版本 python2、检查pip pip --version3、如果没有pip,安装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 这些语句自动提交,无需用Commit提交。 DQL(数据查询…

数据库基本SQL语句大全

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

常用SQL语句总结

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

SQL语句知识大全

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

SQL常用语句(大全)

我们先看一下表的结构: -- 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…

南京有哪些不错的互联网公司

大家好呀,我是大白。被读者催了好久,我终于开始调研南京的互联网公司了。南京是很有吸引力的一座城市,我在西安读研时听我导师和其它老师闲聊,说很多我们学院看上的老师,最后都被南京的学校抢走了。最近我也发现许多安…

最新 955 不加班的公司名单

这是github上的一个开源项目:955.WLB,上面列举了程序员们汇总的 955 作息的公司名单,旨在促进码农的工作生活平衡,文末「阅读原文」附上了 github 项目地址,感兴趣可以看看。 996 工作制:即每天早 9 点到岗…

杭州互联网公司和生活成本

一二线大厂 字节跳动 基本情况 :字节总部在北京,在上海、深圳、杭州、广州、成都等地都有办公室。今年 6 月,抖音电商落户杭州。业务方向 :抖音电商、抖音餐饮、字节跳动广告业务、字节跳动本地生活工作地点 :余杭区中…

Java程序员,你会选择25k的996还是18k的965?

2019独角兽企业重金招聘Python工程师标准>>> 很多互联网公司,更多的创业公司,老板都喜欢玩996。一些情况是工作真的做不完,更多的情况是老板为了心里的满足,更多的是给投资人看看而已。相信大家也都明白,强…

西安互联网公司和生活成本

最近越来越多的人关注到西安这座城市,我就在这篇文章中替大家以程序员的视角看一看西安。我会从程序员在西安的工作机会、在西安的生活环境以及生活成本两个角度进行分析,给大家讲述一个程序员在西安生活的利弊。 工作机会 其实西安在前些年,还被称为互…

965一万,996两万,俩offer怎么选?

扫 码 带 你 走 进 程 序 员 的 欢 乐 源 泉 最近正是秋招季,不免想起很早之前校招的场景,除了每天焦虑面试,还有一点就是对于offer的选择很纠结,毕业后的第一家公司还是很重要的。 最近看脉脉上有人发帖提问:“965拿1…