文件和数据库操作
学习目标
- 掌握操作文本文件方式
- 掌握操作JSON文件方式
- 掌握数据库查询方式
- 掌握数据库增删改方式
1. 基本文件操作语法
"""
操作文本:
1.打开文件,返回文件对象:
open(r"文件路径", "打开方式", encoding="utf8")
2.读取文件、写入文件
文件对象.read() # 读取文件
文件对象.write("内容") # 写入内容
3.关闭文件
文件对象.close()
"""
案例1. 打开文件---只读文件----关闭文件
# 打开文件---只读文件----关闭文件
file_1 = open(r"test.txt", "r", encoding="utf8") # 打开文件。第一个r在字符串前表示,字符串不转义;第二个r表示文件只读
data = file_1.read() # 读取内容
print(data)
file_1.close() # 关闭文件
案例2. 打开文件---修改替换文件内容---关闭文件
# 打开文件---修改替换文件内容---关闭文件
file_2 = open(r"test.txt", "w", encoding="utf8")
file_2.write("hello python")
file_2.close()
案例3. 打开文件---追加文件内容----关闭文件
# 打开文件---追加文件内容----关闭文件
file_3 = open(r"test.txt", "a", encoding="utf8")
file_3.write("\n佛跳墙")
file_3.close()
文件操作练习一:有a、b两个文本文件,将a文件的内容复制到b文件里
参考代码:
file_4 = open(r"test.txt", "r", encoding="utf8")
data = file_4.read()
file_5 = open(r"b.txt", "w", encoding="utf8")
file_5.write(data)
file_4.close()
file_5.close()
案例4. 打开文件---一行一行读取文件内容----关闭文件
file_6 = open(r"test.txt", "r", encoding="utf8")
while True:
line_1 = file_6.readline() # 读取一行内容
print(line_1, end='') # 打印一行内容,结束符改为空字符,即不会再次换行
if line_1 == '': # 当读取到的行内容为空时,即最后末尾无内容可读
break # 退出循环
file_6.close()
文件操作练习二:读取a文件里的偶数行进行打印
参考代码:
file_7 = open(r"test.txt", "r", encoding="utf8")
i = 1 # 行号
while True:
line_1 = file_7.readline() # 读取一行内容
if i % 2 == 0:
print(line_1, end='') # 打印一行内容,结束符改为空字符,即不会再次换行
if line_1 == '': # 当读取到的行内容为空时,即最后末尾无内容可读
break # 退出循环
i += 1
file_7.close()
案例5. 打开文件---读取文件的全部行,存入列表---关闭文件
# 打开文件---读取文件的全部行,存入列表---关闭文件
file_8 = open(r"test.txt", "r", encoding="utf8")
lines = file_8.readlines() # 一次性读取全部文本内容,返回list列表,每一行是列表中的一个元素
for x in lines: # 遍历list列表
print(x,end='')
file_8.close()
打开文件--只读文件--关闭文件的with写法:
with open(r"test.txt", "r", encoding="utf8") as file_9:
data = file_9.read()
print(data)
file_9.close()
2. 回顾json格式
"""
json文件特有的格式:
{}表示一个对象
[]表示一个数组
元素是键值对的形式
每个键值对之间,以,英文逗号分隔
json的格式规则与python的dict字典数据类型非常相似
注意: json的键值对如果有引号,使用的是双引号;python字典的键值对如果有引号,则默认使用的是单引号
"""
3. 打开json文件--读取内容[转换成字典类型]--关闭文件
import json # 需要先导入json包
# 打开json文件--读取内容[转换成字典类型]--关闭文件
file_1 = open(r"a.json","r",encoding="utf8")
data = json.load(file_1) # 将json格式的内容转换成python的字典类型,赋值给data变量
print(data, type(data))
file_1.close()
4. 将python字典转换成json格式后,写入json文件--关闭文件
dict_2 = {"姓名":"宋仲基", "性别": "男","年龄": 25}
file_2 = open(r"a.json","w",encoding="utf8")
json.dump(dict_2,file_2,ensure_ascii=False)
file_2.close()
5. 将python字典转换成json格式
dict_1 = {"姓名":"李俊基", "性别": "男","年龄": 28}
json_1 = json.dumps(dict_1,ensure_ascii=False) # 将字典转成json格式,为了避免中文被转义,ensure_ascii需要设置为false
print(json_1,type(json_1))
6. 将json格式转换成字典类型
str_1 = '{"姓名": "白敬亭", "性别": "男", "年龄": 20}'
dict_3 = json.loads(str_1)
print(dict_3,type(dict_3))
7. 数据库查询
import pymysql
# 创建数据库连接池对象
conn = pymysql.connect(host='localhost', user='root',passwd='123456',db='phms',port=3309,charset='utf8')
# 创建操作游标
cur = conn.cursor()
# 编写sql
sql = 'SELECT * FROM user;'
# 执行sql,接收执行结果
row = cur.execute(sql) # 执行sql,并返回总行数
data = cur.fetchall() # 获取sql的执行结果
# 将结果加入业务需求
# 假设业务为:打印出当前所有用户信息
print(data)
for i in data:
print(i)
# 关闭游标
cur.close()
# 关闭数据库连接池
conn.close()
8. 数据库修改
根据给出不同增、删、改的sql语句,完成不同的数据库操作,语法如下:
import pymysql
# 创建数据库连接池对象
conn = pymysql.connect(host='localhost', user='root',passwd='123456',db='phms',port=3309,charset='utf8')
# 创建操作游标
cur = conn.cursor()
# 编写sql
sql = "INSERT INTO `phms`.`pet` (`id`, `user_id`, `name`, `weight`, `height`, `type`, `birthday`, `create_time`) VALUES ({}, 42, '小白{}', 10, 30, '2', '2022-10-11 10:42:04', '2022-10-20 10:42:10')"
# 调整sql(格式化sql),执行sql
id = 35
for i in range(5):
new_sql = sql.format(id, id)
row = cur.execute(new_sql)
id += 1
# 提交操作
conn.commit() # 提交以上所有修改(指:新增、修改、删除)操作
# 关闭游标
cur.close()
# 关闭数据库连接池
conn.close()