数据分析案例数据存入MySQL

更新时间: 2024-04-01 09:25:15

# DDL定义

  • 本次需求开发我们需要新建一个数据库来使用,数据库名称:py_sql
  • 基于数据结构,可以得到建表语句:
create database py_sql charset utf8;

use py_sql;

create table orders(
	order_date date,
	order_id varchar(255),
	money int,
	province varchar(255)
)
1
2
3
4
5
6
7
8
9
10

# 实现步骤

  • 读取数据
  • 封装数据对象
  • 构建数据库链接
  • 写入数据库

# 代码

"""
SQL 综合案例,读取文件,写入MySQL数据库中
"""
from data_define import Record
from file_define import FileReader, TextFileReader, JsonFileReader
from pymysql import Connection

text_file_reader: FileReader = TextFileReader("C:/Users/Administrator/Downloads/2011年1月销售数据.txt")
json_file_reader: FileReader = JsonFileReader("C:/Users/Administrator/Downloads/2011年2月销售数据JSON.txt")

jan_data: list[Record] = text_file_reader.read_data()
feb_data: list[Record] = json_file_reader.read_data()

# 将两个月份的数据合并为1个list来存储
all_data: list[Record] = 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)
 values('{record.date}','{record.order_id}',{record.money},'{record.province}')"""
    # 执行SQL语句
    cursor.execute(sql)

# 关闭MySQL链接对象
conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

# 将mysql中的数据写入到文件中

from pymysql import Connection
import json

# 构建MySQL链接对象
conn = Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    autocommit=True
)

# 获得游标对象
cursor = conn.cursor()
# 选择数据库
conn.select_db("py_sql")

cursor.execute("select order_date, order_id, money, province from orders")
# 获取所有数据
data_tuple = cursor.fetchall()

file_text = ''
for record in data_tuple:
    record_dict = {
        "date": record[0].strftime('%Y-%m-%d'),
        "order_id": record[1],
        "money": record[2],
        "province": record[3]
    }
    record_text = json.dumps(record_dict, ensure_ascii=False)
    file_text += record_text
    file_text += '\n'

# 打开文件
f = open('./2011年销售数据.txt','w',encoding="UTF8")
# 写入文件
f.write(file_text)
# 关闭文件
f.close()
# 关闭MySQL链接对象
conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41