【Python之pymysql库学习】1.解析fetchone()、fetchmany()、fetchall()(奶妈图+实现代码)
欢迎关注《Python之pymysql库学习》系列,持续更新 欢迎关注《Python之pymysql库学习》系列,持续更新 实现效果 实现思路 其实一半的代码就是创建数据库,创建数据表,插入数据。我已经编写了所有环境配置部分。可以恶意运行所有代码k,直接使用。 这部分代码只能运行一次(不过我加了if判断是否成立,没关系) 1.fetchone():获取一行数据,当一行数据读取困难时使用。可以缓解内
欢迎关注《Python之pymysql库学习》系列,持续更新
欢迎关注《Python之pymysql库学习》系列,持续更新
实现效果
实现思路
其实一半的代码就是创建数据库,创建数据表,插入数据。我已经编写了所有环境配置部分。可以恶意运行所有代码k,直接使用。
这部分代码只能运行一次(不过我加了if判断是否成立,没关系)
1.fetchone():获取一行数据,当一行数据读取困难时使用。可以缓解内存压力,但效率最低
2.fetchmany(x):获取x行数据,x为int类型,在fetchone()和fetchall()内存压力和效率之间,灵活使用
3.fetchall():一次读取所有数据。在数据量比较小的时候使用。虽然效率最高,但如果数据量大,就会卡死
4.读取大量数据时优雅的综合应用。这是使用迭代器的优雅编写方法
1.连接主机上的数据库
#######连接主机上的数据库#######
连接 u003d pymysql.connect(
主机u003d'本地主机',
用户u003d'root',
密码u003d'root',
端口u003d3306,
自动提交u003d假,
字符集u003d"utf8mb4"
)
cursor u003d conn.cursor() # 创建游标
1.为数据库创建sql
########创建数据库sql#######
#(用if判断数据库是否已经存在,只有在数据库不存在时才会创建,否则会报错。)
cursor.execute("如果 python 不存在则创建数据库")
cursor.execute("USE python") # 切换到新的python数据库
1.创建数据表
########创建数据库sql#######
#(用if判断数据库是否已经存在,只有在数据库不存在时才会创建,否则会报错。)
cursor.execute("如果 python 不存在则创建数据库")
cursor.execute("USE python") # 切换到新的python数据库
1.插入数据
########创建数据表#######
cursor.execute('如果学生存在则删除表')
用于创建表的 sql
sql u003d '''
创建表学生(
sno int(8) 主键自动_increment,
sname varchar(30) 不为空,
性别 varchar(5) ,
年龄 int(2),
分数浮动(3,1)
)
'''
cursor.execute(sql)
1.读取数据(本节重点)
########插入数据#######
sql u003d '''
插入学生(姓名、性别、年龄、分数)值(%s、%s、%s、%s)
'''
add_data_list u003d [('朝代', '人', 25, 94.6), ('马汉', '人', 27, 91.1), ('张龙', '人', 21, 88.1 ), ('赵虎', 'man', 22, 97.1)] # 批量插入列表形式的数据
cursor.executemany(sql,添加\数据\列表)
光标.close()
########读取数据#######
conn u003d pymysql.connect(hostu003d'localhost', useru003d'root', passwordu003d'root', databaseu003d'python', portu003d3306, autocommitu003dFalse)
# 从excel中读取学生的SnO、sname、sex、年龄和分数,并存入数据库
尝试:
with conn.cursor() as cursor: # 创建一个游标,其中 conn.cursor()u003du003dcursor
1.fetchone():获取一行数据,当一行数据读取困难时使用。可以缓解内存压力,但效率最低
print("1.fetchone():获取一行数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)#每次读取所有数据时,光标都放在最后,所以每次测试三个函数执行时都要重写光标
row u003d cursor.fetchone()#读取一行数据
while row:#只要读取到数据,row就不是None,即不为false
打印(行)
行 u003d cursor.fetchone()
2.fetchmany(x): 获取x行数据。 X 是 int 类型。 fetchone() 和 fetchall() 之间的内存压力和效率是灵活的
print("2.fetchmany(x):获取x行数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
row u003d cursor.fetchmany(2) # 读取一行数据
while row:#只要读取到数据,row就不是None,即不为false。默认情况下,表示不读取数据
打印(行)
行 u003d cursor.fetchmany(2)
3.fetchall():一次读取所有数据。数据量少时使用。虽然效率最高,但如果数据量大,就会卡死
print("3.fetchall(): 一次读取所有数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
row u003d cursor.fetchall() # 读取所有数据看似最简单,但需要注意的是,这是基于少量数据,硬件可以跟得上。
打印(行)
4. 读取大量数据时优雅的综合应用。这是使用迭代器的优雅编写方法
print("4.读取大量数据时的优雅集成应用")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
for row in iter(lambda:cursor.fetchone(),None):#逐行读取,如果游标Fetchone()为None并结束for循环
打印(行)
除了 pymysql.MySQLError as err: # 捕获异常
print(err) # 如果发生异常,打印错误信息
最后:
conn.close() # 无论如何关闭连接以节省资源
实现代码
# @时间:2022/1/16 16:44
#@作者:南莉
@FileName: one 解析三种fetch py
导入 pymysql
import openpyxl #用户操作excel库
#######连接主机上的数据库#######
连接 u003d pymysql.connect(
主机u003d'本地主机',
用户u003d'root',
密码u003d'root',
端口u003d3306,
自动提交u003d假,
字符集u003d"utf8mb4"
)
cursor u003d conn.cursor() # 创建游标
########创建数据库sql#######
#(用if判断数据库是否已经存在,只有在数据库不存在时才会创建,否则会报错。)
cursor.execute("如果 python 不存在则创建数据库")
cursor.execute("USE python") # 切换到新的python数据库
########创建数据表#######
cursor.execute('如果学生存在则删除表')
用于创建表的 sql
sql u003d '''
创建表学生(
sno int(8) 主键自动_increment,
sname varchar(30) 不为空,
性别 varchar(5) ,
年龄 int(2),
分数浮动(3,1)
)
'''
cursor.execute(sql)
########插入数据#######
sql u003d '''
插入学生(姓名、性别、年龄、分数)值(%s、%s、%s、%s)
'''
add_data_list u003d [('朝代', '人', 25, 94.6), ('马汉', '人', 27, 91.1), ('张龙', '人', 21, 88.1 ), ('赵虎', 'man', 22, 97.1)] # 批量插入列表形式的数据
cursor.executemany(sql,添加\数据\列表)
光标.close()
########读取数据#######
conn u003d pymysql.connect(hostu003d'localhost', useru003d'root', passwordu003d'root', databaseu003d'python', portu003d3306, autocommitu003dFalse)
# 从excel中读取学生的SnO、sname、sex、年龄和分数,并存入数据库
尝试:
with conn.cursor() as cursor: # 创建一个游标,其中 conn.cursor()u003du003dcursor
1.fetchone():获取一行数据,当一行数据读取困难时使用。可以缓解内存压力,但效率最低
print("1.fetchone():获取一行数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)#每次读取所有数据时,光标都放在最后,所以每次测试三个函数执行时都要重写光标
row u003d cursor.fetchone()#读取一行数据
while row:#只要读取到数据,row就不是None,即不为false
打印(行)
行 u003d cursor.fetchone()
2.fetchmany(x): 获取x行数据。 X 是 int 类型。 fetchone() 和 fetchall() 之间的内存压力和效率是灵活的
print("2.fetchmany(x):获取x行数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
row u003d cursor.fetchmany(2) # 读取一行数据
while row:#只要读取到数据,row就不是None,即不为false。默认情况下,表示不读取数据
打印(行)
行 u003d cursor.fetchmany(2)
3.fetchall():一次读取所有数据。数据量少时使用。虽然效率最高,但如果数据量大,就会卡死
print("3.fetchall(): 一次读取所有数据")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
row u003d cursor.fetchall() # 读取所有数据看似最简单,但需要注意的是,这是基于少量数据,硬件可以跟得上。
打印(行)
4. 读取大量数据时优雅的综合应用。这是使用迭代器的优雅编写方法
print("4.读取大量数据时的优雅集成应用")
游标.执行(
'从学生中选择 sno,sname,sex,age,score'
)
for row in iter(lambda:cursor.fetchone(),None):#逐行读取,如果游标Fetchone()为None并结束for循环
打印(行)
除了 pymysql.MySQLError as err: # 捕获异常
print(err) # 如果发生异常,打印错误信息
最后:
conn.close() # 无论如何关闭连接以节省资源
总结
喜欢就给我一个👍,关注!分享更多有趣的Python知识!
版权声明:
如果发现与@mzh原著相距甚远,请务必标注原链接,以便转载
版权所有 2022 mzh
装箱:2022-1-15
欢迎关注《python之pymysql库学习》系列,持续更新
欢迎关注《python之pymysql库学习》系列,持续更新
[1.创建数据库(奶妈级图文+实现代码)]
[2.创建数据表(奶妈级图文+实现代码)]
[3.在数据表中插入单条数据(奶妈级图文+实现代码)]
[4.在数据表中插入多条数据(奶妈级图文+实现代码)]
[5.数据表更新(奶妈级图文+实现代码)]
[6.数据库删除(奶妈级图文+实现代码)]
[7.数据表查询操作(奶妈级图文+实现代码)]
[8.数据库导出的数据为excel文件(奶妈图+实现代码)]
[9.excel导入数据入库(奶妈级图文+实现代码)]
[数据库创建-数据表增删改查-数据表导出到excelexcel,导入数据到数据库-列集合(实现详细代码注释)]
[我。分析 fetchone(), fetchmany(), fetchall() (奶妈图形+实现代码)]
[二。游标相关知识(奶妈级图文+实现代码)\】
[三。 sql语句知识(奶妈级图文+实现代码)\】
[更多细节]
更多推荐
所有评论(0)