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;
相关推荐
a里啊里啊3 分钟前
测试开发面试题
开发语言·chrome·python·xpath
豆沙糕4 分钟前
Python异步编程从入门到实战:结合RAG流式回答全解析
开发语言·python·面试
信奥胡老师13 分钟前
P1255 数楼梯
开发语言·数据结构·c++·学习·算法
A.A呐26 分钟前
【C++第二十一章】set与map封装
开发语言·c++
扶苏-su30 分钟前
Java--获取 Class 类对象
java·开发语言
乘凉~43 分钟前
【VideoCaptioner】开源音视频字幕自动识别工具
python
967744 分钟前
C++多线程2 如何优雅地锁门 (lock_guard) 多线程里的锁的种类
java·开发语言·c++
重生之我要成为代码大佬1 小时前
HuggingFace生态实战:从模型应用到高效微调
人工智能·python·大模型·huggingface·模型微调
爱睡懒觉的焦糖玛奇朵1 小时前
【工业级落地算法之人员摔倒检测算法详解】
人工智能·python·深度学习·神经网络·算法·yolo·目标检测
chushiyunen1 小时前
python实现skip-gram(跳词)示例
开发语言·python