python_day11_practice

将文本数据插入数据库

两文本文件为day10面向对象练习案例
在这里插入图片描述
在这里插入图片描述
将data_define.py文件复制过来(导入失败,疑惑)
在这里插入图片描述
新建数据库,建表orders

-- CREATE DATABASE py_sql charset utf8;use py_sql;create table orders(order_date date,order_id VARCHAR(255),money int,province VARCHAR(10));

在这里插入图片描述
在这里插入图片描述

导包

data_define无法导入啊啊啊啊

# from day10.practice.file_define import FileReader, JsonFileReader, TextFileReader
# from day10.practice.data_define import Record
# from day10.practice import data_define
from day10.practice import file_definefrom pymysql import Connection

数据准备

text_file_reader = file_define.TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader = file_define.JsonFileReader("D:/2011年2月销售数据JSON.txt")data_1 = text_file_reader.read_data()
data_2 = json_file_reader.read_data()
data_1.extend(data_2)print(data_1)
for record in data_1:print(record)

在这里插入图片描述

构建mysql连接对象

conn = Connection(host="localhost",port=3306,autocommit=True,user="root",password="****"
)

获取游标对象

cursor = conn.cursor()

选择数据库

conn.select_db("py_sql")

组织SQL语句!!!注意此处格式化写法 f"字符串str字符串{变量}"

# 组织SQL语句!!!注意此处格式化写法  f"字符串str字符串{变量}"
for record in data_1:sql = f"insert into orders(order_date,order_id,money,province) " \f"values('{record.date}','{record.order_id}',{record.money},'{record.province}') "# sql语句:insert into orders(order_date,order_id,money,province) values('2011-02-28','5b03fc64-cb93-4735-81cc-a08315f8d014',593,'山西省')print(sql)

在这里插入图片描述

执行插入数据操作,已自动确认

    cursor.execute(sql)

关闭数据库

# 关闭数据库

在这里插入图片描述

PS:完整代码

# from day10.practice.file_define import FileReader, JsonFileReader, TextFileReader
# from day10.practice.data_define import Record
# from day10.practice import data_define
from day10.practice import file_definefrom pymysql import Connectiontext_file_reader = file_define.TextFileReader("D:/2011年1月销售数据.txt")
json_file_reader = file_define.JsonFileReader("D:/2011年2月销售数据JSON.txt")data_1 = text_file_reader.read_data()
data_2 = json_file_reader.read_data()
data_1.extend(data_2)# print(data_1)
# for record in data_1:
#     print(record)# 构建mysql连接对象
conn = Connection(host="localhost",port=3306,autocommit=True,user="root",password="####"
)# 获取游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db("py_sql")
# 组织SQL语句!!!注意此处格式化写法  f"字符串str字符串{变量}"
for record in data_1:sql = f"insert into orders(order_date,order_id,money,province) " \f"values('{record.date}','{record.order_id}',{record.money},'{record.province}') "# sql语句:insert into orders(order_date,order_id,money,province) values('2011-02-28','5b03fc64-cb93-4735-81cc-a08315f8d014',593,'山西省')# print(sql)# 执行插入数据操作,已自动确认cursor.execute(sql)# 关闭数据库

data_define

"""
数据定义的类
"""class Record:def __init__(self, date, order_id, money, province):self.date = date  # 日期self.order_id = order_id  # 订单idself.money = money  # 订单金额self.province = province  # 省份# 魔术方法,构建对象时自动运行def __str__(self):return f"{self.date},{self.order_id},{self.money},{self.province}"

file_define

"""
文件相关的类定义
"""
import jsonfrom data_define import Recordclass FileReader:def read_data(self) -> list[Record]:# 读文件数据,将读到数据转为Record对象,将其封装到list内返回passclass TextFileReader(FileReader):# 构造方法定义成员变量def __init__(self, path):self.path = path  # 文件路径# 复写(实现抽象方法)def read_data(self) -> list[Record]:f = open(self.path, "r", encoding="utf-8")record_list: list[Record] = []  # 类型注解# lines = f.readlines()# print(lines)for line in f.readlines():# print(line)line = line.strip()  # 去除首尾空格换行符data_list = line.split(',')# print(data_list)# 将数据转为Record类对象  ['2011-01-01', '4b34218c-9f37-4e66-b33e-327ecd5fb897', '1689', '湖南省']record = Record(data_list[0], data_list[1], int(data_list[2]), data_list[3])record_list.append(record)# 关闭文件流f.close()# print(record_list)return record_listclass JsonFileReader(FileReader):# 构造方法定义成员变量def __init__(self, path):self.path = path  # 文件路径def read_data(self) -> list[Record]:f = open(self.path, "r", encoding="utf-8")  # 成员变量勿忘selfrecord_list: list[Record] = list()  # 类型注解# print(f.read())for line in f:data_dict = json.loads(line)# print(data_dict)# 将数据转为Record类对象"""{'date': '2011-02-01', 'order_id': 'caf99222-53d6-427b-925d-3187fc71a86a', 'money': 1805, 'province': '江西省'}"""record = Record(data_dict["date"], data_dict["order_id"], int(data_dict["money"]), data_dict["province"])record_list.append(record)# 关闭文件流f.close()# print(record_list)return record_listif __name__ == '__main__':text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")  # 传入形参pathlist_1 = text_file_reader.read_data()json_file_reader = JsonFileReader("D:/2011年2月销售数据JSON.txt")list_2 = json_file_reader.read_data()print(list_1)  # [<data_define.Record object at 0x0000020F03DD32B0>,.....]print(list_2)  # 直接打印,显示内存地址# 一月数据for l in list_1:print(l)# 二月数据for l in list_2:print(l)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29337.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

After Effects CPU 和 RAM 使用率高,如何修复?

如果您发现 Adob​​e After Effects 的 CPU 和 RAM 使用率较高&#xff0c;可以按照以下方法解决该问题。 1]确保您的系统满足最低系统要求 要在您的 PC 上运行 Adob​​e After Effects&#xff0c;您的 PC 需要满足最低系统要求。只有这样&#xff0c;该程序才会停止消耗更…

怎么将拼接的字符串element组件通过“v-html“渲染到页面

如上图所示&#xff0c;没那么多废话&#xff0c;直接上代码 html中 <div id"app"><div :html"tempHtml"></div> </div>vue中 new Vue({el: #app,data() {return {tempHtml: }},created() {this.getHtml()},mounted() {window.…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…

【ceph】存储池pg个数如何设置

存储池pg个数如何设置 参考官方文档说明&#xff1a;https://old.ceph.com/pgcalc/参数说明TargePGs per OSD&#xff1a;每个OSD的pg数OSD#存储池包含osd个数%Data存储池写入数据占总OSD容量百分比Size存储池冗余数

安达发|高级计划与智能排程APS软件的发展史进程

从泰勒的科学管理理论出发&#xff0c;率先追求科学的管理理论和管理工具&#xff0c;在计算机成为企业日常管理的基本工具之后&#xff0c;信息系统已经成为提高工厂管理水平的重要支柱。 在工厂计划领域&#xff0c;开始了从MRP到MRPII再到ERP的演变过程。MRPII指的是制造…

微服务——技术栈+概念+远程调用案例

目录 微服务技术栈 认识微服务 微服务架构演变 总结 微服务技术对比 SpringCloud springcloud和springboot的对应版本 ​编辑 服务拆分 注意事项 入门案例 远程调用 步骤一 :注册ResTemplate 步骤二&#xff1a;修改service层代码 微服务技术栈 将一个大的项目拆分出…

RabbitMQ消息堆积问题及惰性队列

一&#xff0c;消息堆积 1&#xff0c;消费者堆积问题 当生产者生产消息的速度超过了消费者处理消息的速度&#xff0c;就会导致消息在队列中进行堆积&#xff0c;一定时间后会造成队列达到存储的上限&#xff0c;那么最开始进入队列的消息可能变成死信&#xff0c;会被丢弃&…

利用Python和Selenium编程,实现定时自动检索特定网页,发现特定网页内容发生变化后,向管理员发送提醒邮件(一)

一、项目需求 要求爬取某单位网站&#xff0c;登录后台查看是否有新增“网友提问”&#xff0c;如果有新的提问&#xff0c;向特定邮箱发出提醒邮件。 二、项目分析 &#xff08;一&#xff09;判断是否可用爬虫爬取相关内容 首先查看该网站的robots.txt文件&#xff0c;发现…

LeetCode面试题02.07.链表相交

面试题02.07.链表相交 两种解题思路 面试题02.07.链表相交一、双指针二、哈希集合 一、双指针 这道题简单来说&#xff0c;就是求两个链表交点节点的指针 这里注意&#xff1a;交点不是数值相等&#xff0c;而是指针相等 为了方便举例&#xff0c;假设节点元素数值相等&…

如何用双指针法解决力扣“反转单词前缀”问题

本篇博客会讲解力扣“2000. 反转单词前缀”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;先调用strchr函数&#xff0c;在字符串word中查找字符ch&#xff0c;若找到了&#xff0c;则会返回一个非空指针p&#xff0c;指向ch在word中的位置。为了反转从word到…

甲板上的战舰(力扣)递归 JAVA

给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ &#xff0c;返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说&#xff0c;战舰只能按 1 x k&#xf…