반응형

1. 시험환경

    ˙ python

    ˙ mariadb

    ˙ excel

 

2. 목적

    ˙ pandas를 이용하여 엑셀(xlsx) 데이터를 추출하여 dataframe을 생성한다.

    ˙ dataframe에서 열 단위 데이터를 추출한다.

    ˙ 추출한 열 단위 데이터를 DB에 저장한다.

 

3. 적용

    ① 엑셀(xlsx) 샘플 파일

        - 파일명 : sample.xlsx

        - Sheet명 : Sheet1

sample.xlsx
0.01MB
샘플 데이터

 

    ② DB 설정 파일에서 설정 정보를 입력한다.

        - 파일명 : rdb.py

        - DB 설정정보 : user(계정), password(계정 비밀번호), host(DB IP), port(DB Port), database(스키마)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import mariadb
import sys
 
def connection():
    try:
        conn = mariadb.connect(
            user="root",
            password="1q2w3e",
            host="127.0.0.1",
            port=3307,
            database="sample"
        )
 
    except mariadb.Error as e:
        print(f"Error connecting to MariaDB Platform: {e}")
        sys.exit(1)
 
    return conn
cs

 

    ③ 데이터 처리 코드를 작성한다.

        - pandas를 이용하여 엑셀(xlsx) 데이터를 추출하여 dataframe을 생성한다.

        - dataframe에서 열 단위 데이터를 추출한다.

        - 추출한 열 단위 데이터를 DB에 저장한다.

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
42
43
44
45
46
import mariadb
import pandas as pd
import rdb
 
file = './input/sample.xlsx'
 
def readXlsx(_file):
    return pd.read_excel(_file, engine='openpyxl', sheet_name='Sheet1')
 
 
def insertColData(_cursor, _col_1_list, _col_2_list, _col_3_list, _col_4_list):
    for i in range(len(_col_1_list)):
        print(_col_1_list[i], _col_2_list[i], _col_3_list[i], _col_4_list[i])
 
        try:
            _cursor.execute("INSERT INTO world VALUES (?, ?, ?, ?)",
                            (str(_col_1_list[i]).strip(),
                             str(_col_2_list[i]).strip(),
                             str(_col_3_list[i]).strip(),
                             str(_col_4_list[i]).strip()))
        except mariadb.Error as e:
            print(f"Error: {e}")
 
 
if __name__ == '__main__':
    print('1. xlsx 파일 읽기')
    df = readXlsx(file)
    print(df)
    print()
 
    print('2. dataframe으로부터 열단위 데이터 추출')
    col_1_list = df.iloc[:,0].values.tolist()   # 1열
    col_2_list = df.iloc[:,1].values.tolist()   # 2열
    col_3_list = df.iloc[:,2].values.tolist()   # 3열
    col_4_list = df.iloc[:,3].values.tolist()   # 4열
    print(col_1_list)
    print(col_2_list)
    print(col_3_list)
    print(col_4_list)
 
    print('3. DB Insert')
    conn = rdb.connection()
    cursor = conn.cursor()
    insertColData(cursor, col_1_list, col_2_list, col_3_list, col_4_list)
    conn.commit()
    conn.close()
cs

 

    ④ 파일 구조

        - input/sample.xlsx : 입력 데이터 샘플

        - rdb.py : DB 설정 파일

파일 구조

 

4. 결과

    ˙ 콘솔 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. xlsx 파일 읽기
    Nation  Language   Money  Population
0  America   English  Dollar        5000
1    Spain   Spanish    Euro        4000
2    Italy   Italian     NaN        3000
3    Japan  Japanish   Japan       20000
 
2. dataframe으로부터 열단위 데이터 추출
['America''Spain''Italy''Japan']
['English''Spanish''Italian''Japanish']
['Dollar''Euro', nan, 'Japan']
[50004000300020000]
 
3. DB Insert
cs

 

    ˙ DB 테이블 저장

sample.world 데이터 저장 결과

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형

+ Recent posts