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;
相关推荐
以后不吃煲仔饭4 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师4 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
前端拾光者8 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
程序猿阿伟10 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链
傻啦嘿哟28 分钟前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
大数据编程之光32 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
初九之潜龙勿用33 分钟前
C#校验画布签名图片是否为空白
开发语言·ui·c#·.net
B站计算机毕业设计超人34 分钟前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
Dola_Pan1 小时前
C语言:数组转换指针的时机
c语言·开发语言·算法
ExiFengs1 小时前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring