使用python往MYSQL写入数据

案例需求:
使用《面向对象》章节案例中的数据集,完成使用 Python 语言,读取数据,并将数据写入 MySQL 的功能。

main.py

"""
SQL综合案例,读取文件,写入SQL数据库中
"""
from file_define import FileReader,TextFileReader,JsonFileReader
from data_define import Record
from pyecharts.options import *
from pyecharts.globals import ThemeType
from pymysql import Connection

text_file_reader=TextFileReader("D:/2011年1月销售数据.txt")
josn_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")
jan_data=text_file_reader.read_data()
feb_data=josn_file_reader.read_data()
#将2个月份的数据合并为1个list存储
all_data=jan_data+feb_data

#构建MYSQL链接对象
conn=Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)
#获得游标对象
cursor=conn.cursor()
#选择数据库
conn.select_db("py_sql")
#组织SQL语句
for record in all_data:
    sql=f"insert into orders(order_date,order_id,money,province) " \
        f"value('{record.data}','{record.order_id}',{record.money},'{record.province}')"
    #print(sql)
    # 执行SQL语句
    cursor.execute(sql)

#关闭MYSQL链接对象
conn.close()

file_define.py

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

from data_define import Record
class FileReader:
    def read_data(self)->list[Record]:
        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=[]
        for line in f.readlines():
            line=line.strip()    #消除读取到的换行符
            data_list=line.split(",")
            record=Record(data_list[0],data_list[1],int(data_list[2]),data_list[3])
            record_list.append(record)
        f.close()
        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")
        record_list = []
        for line in f.readlines():
            data_dict=json.loads(line)
            record=Record(data_dict["date"],data_dict["order_id"],data_dict["money"],data_dict["province"])
            record_list.append(record)
        f.close()
        return record_list

if __name__=='__main__':
    text_file_reader=TextFileReader("D:/2011年1月销售数据.txt")
    list1=text_file_reader.read_data()
    json_file_reader=JsonFileReader("D:/2011年2月销售数据JSON.txt")
    list2=json_file_reader.read_data()
    for l in list1:
        print(l)
    for l in list2:
        print(l)

data_define,py

"""
数据定义的类
"""
class Record:

    def __init__(self,data,order_id,money,province):
        self.data = data
        self.order_id = order_id
        self.money = money
        self.province = province

    def __str__(self):
        return f"{self.data},{self.order_id},{self.money},{self.province}"

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值