python_day11_practice

news2024/10/7 4:25:04

将文本数据插入数据库

两文本文件为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_define

from 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_define

from 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字符串{变量}"
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  # 订单id
        self.money = money  # 订单金额
        self.province = province  # 省份

    # 魔术方法,构建对象时自动运行
    def __str__(self):
        return f"{self.date},{self.order_id},{self.money},{self.province}"

file_define

"""
文件相关的类定义
"""
import json

from data_define import Record


class FileReader:
    def read_data(self) -> list[Record]:
        # 读文件数据,将读到数据转为Record对象,将其封装到list内返回
        pass


class 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_list


class JsonFileReader(FileReader):
    # 构造方法定义成员变量
    def __init__(self, path):
        self.path = path  # 文件路径

    def read_data(self) -> list[Record]:
        f = open(self.path, "r", encoding="utf-8")  # 成员变量勿忘self

        record_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_list


if __name__ == '__main__':
    text_file_reader = TextFileReader("D:/2011年1月销售数据.txt")  # 传入形参path
    list_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.coloradmin.cn/o/772252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业内部FAQ系统的搭建重要性是什么?

企业内部FAQ系统&#xff08;Frequently Asked Questions&#xff0c;常见问题解答系统&#xff09;的搭建对于企业来说具有重要的意义。它可以帮助企业有效地管理和解决员工和客户的常见问题&#xff0c;提高工作效率和服务质量。 企业内部FAQ系统搭建的重要性&#xff1a; …

k8s集群内网与办公网络打通

k8s网络 k8s节点ip段&#xff1a;192.168.1.0/24 k8s pod ip段&#xff1a; 10.233.64.0/18 k8s svc ip段&#xff1a; 10.233.0.0/18办公网络 办公电脑ip段&#xff1a;192.168.2.0/24 交换机ip&#xff1a; 192.168.8.252说明 192.168.2.0/24网段访问192.168.1.0/24网段经…

埋点数据完备性校验及结果分析

一、数据校验功能入口 入口:数据管理——数据质量——数据校验 二、操作步骤 2.1 统计时间区间 根据自身需要进行选择。一般选择埋点严重bug fix后的时间,避免脏数据过多影响分析结果。 2.2 数据抽样 根据自身需要进行选择。全量数据量较大,分析起来会复杂一些,但是结…

Win11中的Swapfile.sys

除了 pagefile.sys 和 hiberfil.sys 文件外&#xff0c;在系统根目录会多出一个 swapfile.sys 虚拟内存文件。Windows 10/8 系统为什么会同时使用 SWAP 交换文件和 Page 页面文件呢&#xff1f; 其实 swapfile.sys 文件目前只被用来交换 Universal App (其实就是Metro App)的个…

pyqt 使用pixmap展示图片时候出现失真(图片偏移)

像上图上面的情况&#xff0c; 都是经过放大、旋转等操作&#xff0c;展示图片的时候出现失真的情况 一般都是显卡的问题 需要在qimage转pixmap时&#xff0c;添加部分参数 修改办法&#xff1a; 原本是&#xff1a; pixMap QImage(self.pic_image, width, height, QImage…

JDK、JRE、JVM三者之间的关系以及区别

一、关系 JDK JRE Java 开发工具包 [Java,Javac,Javadoc,Javap等] JRE JVM Java 的核心类库 二、JDK,JRE与JVM介绍 1、JDK JDK是用于Java程序开发的最小环境&#xff0c;包含&#xff1a;Java程序设计语言&#xff0c;Java虚拟机&#xff08;JVM&#xff09;&#xff0…

喜讯!旭帆科技成功入驻“科大硅谷”!

2023年7月&#xff0c;安徽旭帆信息科技有限公司&#xff08;以下简称“旭帆科技”&#xff09;成功入驻“科大硅谷”&#xff0c;成为合肥城市发展新引擎、科创生态集群企业队伍中的一员。 “科大硅谷”项目建设总投资约75.82亿&#xff0c;共计17.37平方公里&#xff0c;是聚…

MQTT 订阅选项的使用

在 MQTT 发布/订阅模式介绍这篇博客中&#xff0c;我们已经了解到&#xff0c;我们需要先向服务端发起订阅&#xff0c;才能从服务端接收对应的消息。如果说订阅时指定的主题过滤器决定了服务端将向我们转发哪些主题下的消息&#xff0c;那么订阅选项则是允许我们进一步定制服务…

Python学习(十三)

安装包的方法&#xff1a; #python数据和json数据的相互转换 import json #准备列表&#xff0c;列表的每一个元素都是字典&#xff0c;将其转换为JSON data [{"name":"大大","age":21},{"name":"小小","age":21…

Java工程师进阶:50小时,搞定企业级核心框架

哈喽&#xff0c;做Java开发的同学们注意啦&#xff01;&#xff01;&#xff01; 小谷又来分享技术了&#xff0c;关乎Java工程师技能进阶与升职加薪的方向哦~~ 最近老有小伙伴私信小谷&#xff0c;说自己的Java水平已经到了瓶颈期&#xff0c;不知道该咋突破&#xff0c;长久…

STM32定时器中断的使用示例

STM32定时器中断的使用示例 前言硬件和软件cubemx使能定时器中断中断服务函数案例输出结果 前言 上一篇博客实现了定时器输出pwm&#xff0c;这篇接着上次的工程&#xff0c;在上次的工程上做简单的配置即可 硬件和软件 硬件使用的是stm32h750vbt6&#xff1b;软件用到了stm…

JAVA电商 B2B2C商城系统免费搭建 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 手机商城免费搭建

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框…

星火认知大模型,让我感受到了国产AI的崛起

文章目录 一、申请和测试代码二、实测GPT4.0和星火认知大模型的对比2.1 测试网站2.2 经典问题提问对比2.3 代码问题提问对比2.4 论文问题对比2.5 评价 一、申请和测试代码 在我之前的一篇文章中&#xff0c;我分享了如何申请星火认知大模型的内测&#xff0c;并提供了一份可以…

云曦期末复现

serialize 代码审计&#xff0c;给1传参&#xff0c;满足password的值为yunxi&#xff0c;那么反序列化前就会执行__wakeup函数&#xff0c;从而得到flag.php&#xff0c;但是password的值被定死为1&#xff0c;利用PHP反序列化的字符逃逸: <?php error_reporting(0); hig…

Ubuntu搭建docker+laradock

使用Ubuntu搭建dockerlaradock windows 下载Ubuntu工具二选一 链接&#xff1a;https://pan.baidu.com/s/154K6MKdFZxWqaTn2q-6MSQ 提取码&#xff1a;06lc https://www.jianshu.com/p/b7e11d0dbe8c借鉴地址&#xff1a;https://zhuanlan.zhihu.com/p/547169542 备注&#x…

GO语言semaphore信号量

一般地,我们唤醒在等待队列中的线程会使用系统调用和切换线程这样的开销比较大. 本质上.是结合自旋锁和调度器调度后的锁.不过这种机制适合线程不适合协程.因为调度器调度需要切换线程,而协成切换不能切换线程. 协程等待一个锁如何等待和唤醒呢? 在GO语言中,我们使用semaphor…

使用端点中心进行补丁管理

什么是补丁管理 补丁管理是为网络中的所有操作系统和应用程序检测、下载、测试、批准和安装新补丁/缺失补丁的过程。它需要集中查看网络中端点的适用补丁&#xff0c;以便可以一目了然地对易受攻击、高度易受攻击和健康的系统进行分类。这有助于发现需要注意的系统&#xff0c…

十分钟让你了解 Linux ABI

getline() 提供了一种更灵活的方法&#xff0c;可以在不破坏系统的情况下将用户数据读入程序。 在 C 语言中读取字符串是一件非常危险的事情。当读取用户输入时&#xff0c;程序员可能会尝试使用 C 标准库中的 gets 函数。它的用法非常简单&#xff1a; char *gets(char *stri…

socket编程代码示例

1. TCP server client模拟聊天对话框 server.c /* server.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #include &l…

jmeter使用PerfMon插件监测服务器资源时 连接超时

异常提示&#xff1a; ERROR: java.net.ConnectException: Connection timed out: connect 解决方案&#xff1a; 一种情况下是端口未启用&#xff1b; 另一种情况更新端口号&#xff0c;将默认端口进行修改 4444 修改为其他未使用的端口号&#xff08;例如&#xff1a;4445 &…