数据分析案例数据存入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
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
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
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