반응형

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 데이터 저장 결과

 

 

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

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ 파이썬 3.8

    ˙ MS Office Pro 2019

    ˙ MariaDB 10.1 (x64)

 

2. 목적

    ˙ pandas 라이브러리를 이용하여 xlsx(엑셀 파일)을 읽어온다.

    ˙ pandas 라이브러리를 이용하여 읽어온 엑셀 파일의 특정 값(열,행)에 접근한다.

    ˙ 읽어온 엑셀 데이터를 MariaDB에 저장한다.

 

3. 적용

    ① pandas로 읽어 올 엑셀 파일(xlsx)을 준비한다.

        - 첫번째 행(row) : title

        - 두번째 행(row) 이후 : 데이터

sample.xlsx
0.01MB

 

    ② 데이터를 저장한 DB 테이블을 생성한다.

        - DB 스키마 : sample

        - 테이블명 : example

1
2
3
4
5
6
7
8
9
CREATE TABLE `example` (
    `nation` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `language` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `money` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_bin',
    `population` BIGINT(20) NULL DEFAULT NULL
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
 
cs

 

    ③ MariaDB Connection 생성 및 종료 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
import mariadb
 
 
def mariaDbConnection(u, pw, h, p, d):
    try:
        conn = mariadb.connect(user = u, password = pw, host = h, port = p, database = d)
        print("DB Connection Success: {0}".format(h))
    except mariadb.Error as e:
        print("Error connecting to MariaDB Platform : {}".format(e))
        sys.exit(1)
 
    return conn
 
 
def mariaDbClose(c):
    try:
        c.close()
        print("DB Close Success")
    except mariadb.Error as e:
        print("Error closing from MariaDB Platform")
        sys.exit(1)
 
cs

 

    ④ 엑셀 파일(xlsx)을 읽어서 DB에 저장하는 코드를 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import mariadbQuery
import pandas as pd
 
 
dbConn = mariadbQuery.mariaDbConnection('root''1q2w3e'"127.0.0.1"3307'sample')
cur = dbConn.cursor()
 
readData = pd.read_excel("./sample.xlsx")
 
for i in readData.index:
    query = "INSERT INTO example VALUES ('{0}', '{1}', '{2}', {3})".format(readData['Nation'][i], readData['Language'][i], readData['Money'][i], int(readData['Population'][i]))
    cur.execute(query)
 
dbConn.commit()
 
mariadbQuery.mariaDbClose(dbConn)
 
cs

 

4. 결과

    ˙ 프로그램에 의해서 엑셀 데이터가 DB에 저장되었는지 확인한다.

 

 

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

반응형

+ Recent posts