python------Pymysql模块

查询

总结:
fetchall(): 获取所有查询到的内容。返回结果是嵌套的元组
fetchone(): 获取一条数据。返回结果就是一个非嵌套的元组
fetchmany(num): 返回结果是元组嵌套,底层也是有游标的。如果不传递参数num,默认读取一条数据

注意: 与文件读取类似,读取查询的数据内容的时候,底层有个游标。你读取到了什么地方,就会移动到那个地方。后续会接着从那个地方开始读

注意: execute的结果,代表的是影响的行数,并不是满足条件的数据条数

可能遇到的错误 :TypeError: object supporting the buffer API required

原因:是因为password的类型需要是字符串

python 复制代码
# 创建数据库命令 create database 库名 char set utf8;
import pymysql as mysql

"""
    TypeError: object supporting the buffer API required
    原因:是因为password的类型需要是字符串
"""
# 1- 创建连接
conn = mysql.connect(host='192.168.88.161',port=3306,database='day08',user='root',password='123456',charset='utf8')

# 2- 通过连接获得游标
cur = conn.cursor()

# 3- 通过游标执行SQL语句
# 查询的sql语句
query_sql = "select id,name from students"
result = cur.execute(query_sql)
print(result)

# 获取查询的数据内容
"""
    (
        (1, '张三'), (2, '李四'), (3, '王五')
    )
"""
# fetch_all_result = cur.fetchall()
# print(type(fetch_all_result),fetch_all_result)

print("-"*30)
"""
    注意:读取查询的数据内容的时候,底层有个游标,你读取到了什么地方,就会移动到那个地方。后续会接着从那个地方开始读
"""
# fetchone:返回的结果就是一条数据,没有元组的嵌套(1, '张三')
fetch_one_result = cur.fetchone()
print(type(fetch_one_result),fetch_one_result)

# print("-"*30)
#
# fetch_one_result = cur.fetchone()
# print(type(fetch_one_result),fetch_one_result)

print("="*30)
"""
fetchmany(num):返回结果是元组嵌套,底层也是有游标的。((3, '王五'),)。
                如果不传递参数num,默认读取一条数据
"""
fetch_many_result = cur.fetchmany(3)
print(type(fetch_many_result),fetch_many_result)
# fetch_many_result = cur.fetchmany()
# print(type(fetch_many_result),fetch_many_result)
# 4- 关闭游标
cur.close()
# 5- 关闭连接
conn.close()

增删改

python 复制代码
"""
pmysql增、删、改操作
"""
# ① 导入模块
import pymysql
# ② 创建连接
conn = pymysql.connect(host='192.168.88.131', port=3306,
                       user='root', password='itcast',
                       database='test', charset='utf8')
# ③ 创建游标
cursor = conn.cursor()
# 开启事务
conn.begin()
# ④ 执行SQL
insert_sql = 'insert into students values("Tom", 25, "male", 2.9)'
cursor.execute(insert_sql)
select_sql = 'select * from students'
cursor.execute(select_sql)
# 获取查询的结果
res = cursor.fetchall()
print(res)
# 提交事务
# 必须要进行事务的提交
conn.commit()
# ⑤ 关闭游标
cursor.close()
# ⑥ 关闭连接
conn.close()
# DELETE FROM students WHERE name = 'Tom';
# SELECT * FROM students;
相关推荐
kruptos3 小时前
分布式系统怎么“选主“?Raft 共识一次讲清
开发语言·分布式·php·共识算法
吴声子夜歌3 小时前
ApacheCommons——commons-cli(命令行参数解析)
java·开发语言·apache
benchmark_cc4 小时前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库4 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H4 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒4 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP5 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
2601_962382435 小时前
python快乐编程网络爬虫课后答案
python·网络爬虫·学习工具·课后答案·刷题app
鹏哥带你干乡墅6 小时前
优选乡墅赋能培训平台如何帮助提升乡村建设?
大数据·人工智能·python
江畔柳前堤6 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native