MySQL 테이블을 생성하고 데이터를 넣기


In [1]:
import os

import pandas as pd

import MySQLdb

In [2]:
DATABASE_HOST = "localhost"  # "localhost" == "127.0.0.1"

DATABASE_USERNAME = os.environ.get("DATABASE_USERNAME", "YOUR_USERNAME")
DATABASE_PASSWORD = os.environ.get("DATABASE_PASSWORD", "YOUR_PASSWORD")

DATABASE_NAME = "fastcampus_data_science_db"

In [3]:
connection = MySQLdb.connect(
    DATABASE_HOST,
    DATABASE_USERNAME,
    DATABASE_PASSWORD,
    DATABASE_NAME,
    charset='utf8',
)

In [4]:
connection

cursor = connection.cursor()

In [5]:
SQL_QUERY = """
    CREATE TABLE IF NOT EXISTS fastroom 
    (
        email varchar(255),
        phonenumber varchar(255),
        address varchar(255),
        deposit int,
        rent int
    );
"""

cursor.execute(SQL_QUERY)


/Users/dobestan/.pyenv/versions/datascience/lib/python3.5/site-packages/ipykernel/__main__.py:12: Warning: Table 'fastroom' already exists
Out[5]:
0

In [6]:
# 기존에 직방 API 크롤링을 통해서 생성한 CSV 파일을 불러오겠습니다.

room_df = pd.read_csv("crawling/zigbang_room.csv")
room_df


Out[6]:
직방 매물번호 연락처 이메일 부동산 보증금 월세
0 3467204 010-4780-3740 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 1000 100
1 3150497 010-4780-3740 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 11000 60
2 3440906 010-9134-5291 서울특별시 강남구 신사동 610-2 1층 열린공인중개사(강광수) 5000 65
3 3376834 010-4166-1970 서울특별시 강남구 논현동 108 웰스톤상가 B101 미래공인중개사(김유철) 3000 95
4 3331511 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 한백부동산공인중개사(김남조) 110 110
5 3373198 010-3907-0404 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 15000 70
6 3376434 010-9134-5291 서울특별시 강남구 신사동 610-2 1층 열린공인중개사(강광수) 1000 85
7 3322860 010-8574-7863 서울특별시 서초구 강남대로 545-4 , 1층 (반포동) 한강공인중개사(김상헌) 1000 80
8 3303061 010-4348-1202 서울특별시 강남구 논현동 193-39 동하공인중개사(임성우) 1000 60
9 3262172 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 스타공인중개사(박정직) 2000 50
10 3228631 010-6279-9950 서울특별시 강남구 대치동 891-26번지 아이빌멤버스 105호 HS강남공인중개사(김현수) 1000 96
11 3505011 010-4520-0608 서울특별시 강남구 논현동 233-1 H공인중개사(김용만) 15000 70
12 3249401 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 도원공인중개사(손석진) 65 65
13 3330951 010-9905-4979 서울특별시 강남구 역삼로17길 9 강남우리공인중개사(어정화) 2000 150
14 3494055 010-6271-1877 서울특별시 강남구 압구정로 2길 62, 1층 청록공인중개사(하순자) 3000 60
15 3317227 010-3877-0714 서울특별시 강남구 역삼동 625-10 커피한잔부동산 커피한잔공인중개사(손별) 500 67
16 3405679 010-8025-7008 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 15000 60
17 3103384 010-3487-2672 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 5000 50
18 3418616 010-7540-8818 서울특별시 강남구 역삼동 657-271층 101호 나무공인중개사(조민영) 90 90
19 3456814 010-8574-7863 서울특별시 서초구 강남대로 545-4 , 1층 (반포동) 한강공인중개사(김상헌) 300 80
20 3181675 010-3487-2672 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 5000 60
21 3309372 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 한백부동산공인중개사(김남조) 75 75
22 3501566 010-3100-3561 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 1000 65
23 3346510 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 도원공인중개사(손석진) 65 65
24 3406670 010-4780-3740 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 1000 60
25 3493254 010-3539-9712 서울특별시 강남구 역삼동 682-20 431호 아셈타운공인중개사(임현옥) 7000 100
26 3501607 010-3100-3561 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 2000 63
27 3484623 010-2068-6634 서울특별시 강남구 논현동 116-3 웰컴공인중개사(이영진) 1000 120
28 3190410 010-8456-3090 서울특별시 강남구 테헤란로14길 45 1층(역삼동) 건우공인중개사(김상모) 70 70
29 3350050 010-6573-9788 서울특별시 강남구 삼성동 34-25 1층 NB공인중개사(길주현) 1000 70
30 3495453 010-8345-4383 서울특별시 강남구 역삼동 617-4 부동산네트워크공인중개사(황창문) 8000 55
31 3446619 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 도원공인중개사(손석진) 68 68
32 3451078 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 스타공인중개사(박정직) 4000 40
33 3345445 010-4667-8638 서울특별시 강남구 남부순환로 2917, 106호(대치동) 대청공인중개사(이선영) 14000 70
34 3332380 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 한백부동산공인중개사(김남조) 10000 100
35 3450803 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 스타공인중개사(박정직) 6000 50
36 3471049 010-4776-8102 서울특별시 강남구 봉은사로26길 30 1층(역삼동) 정성공인중개사(정문식) 100 100
37 3438747 010-4780-3740 서울특별시 강남구 논현1동 124-33 TODAY공인중개사(이인규) 3000 100
38 3330749 010-4166-1970 서울특별시 강남구 논현동 108 웰스톤상가 B101 미래공인중개사(김유철) 1000 85
39 3446920 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 한백부동산공인중개사(김남조) 75 75
40 3501554 010-3100-3561 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 1000 63
41 3435418 010-7777-4079 서울특별시 강남구 논현동 149-32 1F 친절한공인중개사(김천호) 500 65
42 3501551 010-3100-3561 서울특별시 강남구 삼성동 34-33 강남코리아공인중개사(기숙영) 3000 75

In [7]:
# 지금까지 추가된 row 데이터 제거

# SQL_QUERY
SQL_QUERY = """
    DELETE FROM fastroom;
"""

cursor.execute(SQL_QUERY)


Out[7]:
86

In [8]:
# 방법 #1. for 문으로 하나씩 하나씩 추가한다.

for index, row in room_df.iterrows():
    room_id = row.get("직방 매물번호")
    address = row.get("이메일")  # 이 부분은 제가 CSV 파일을 만들때 잘못 만들었네요.
    deposit = row.get("보증금")
    rent = row.get("월세")
    phonenumber = row.get("연락처")


    SQL_QUERY = """
        INSERT INTO fastroom (email, phonenumber, address, deposit, rent)
        VALUES (
            "{email}",
            "{phonenumber}",
            "{address}",
            "{deposit}",
            "{rent}"
    );
    """.format(
        email="",
        phonenumber=phonenumber,
        address=address,
        deposit=deposit,
        rent=rent,
    )
    cursor.execute(SQL_QUERY)
    
    # 실제로 데이터베이스에 기록되기 위해서는 현재까지의 기록 과정을 commit 해주실 필요가 있습니다.
    # 이 부분이 실행되지 않으면, connection 이 열린 상태에서는 데이터가 "있는 것 처럼" 보이지만,
    # 실제로는 데이터베이스에 기록되지 않습니다.
    connection.commit()

In [9]:
# 현재 데이터베이스에 입력된 자료 불러오기

SQL_QUERY = """
    SELECT *
    FROM fastroom;
"""

pd.read_sql(SQL_QUERY, connection)


Out[9]:
email phonenumber address deposit rent
0 010-4780-3740 서울특별시 강남구 논현1동 124-33 1000 100
1 010-4780-3740 서울특별시 강남구 논현1동 124-33 11000 60
2 010-9134-5291 서울특별시 강남구 신사동 610-2 1층 5000 65
3 010-4166-1970 서울특별시 강남구 논현동 108 웰스톤상가 B101 3000 95
4 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 110 110
5 010-3907-0404 서울특별시 강남구 삼성동 34-33 15000 70
6 010-9134-5291 서울특별시 강남구 신사동 610-2 1층 1000 85
7 010-8574-7863 서울특별시 서초구 강남대로 545-4 , 1층 (반포동) 1000 80
8 010-4348-1202 서울특별시 강남구 논현동 193-39 1000 60
9 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 2000 50
10 010-6279-9950 서울특별시 강남구 대치동 891-26번지 아이빌멤버스 105호 1000 96
11 010-4520-0608 서울특별시 강남구 논현동 233-1 15000 70
12 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 65 65
13 010-9905-4979 서울특별시 강남구 역삼로17길 9 2000 150
14 010-6271-1877 서울특별시 강남구 압구정로 2길 62, 1층 3000 60
15 010-3877-0714 서울특별시 강남구 역삼동 625-10 커피한잔부동산 500 67
16 010-8025-7008 서울특별시 강남구 삼성동 34-33 15000 60
17 010-3487-2672 서울특별시 강남구 논현1동 124-33 5000 50
18 010-7540-8818 서울특별시 강남구 역삼동 657-271층 101호 90 90
19 010-8574-7863 서울특별시 서초구 강남대로 545-4 , 1층 (반포동) 300 80
20 010-3487-2672 서울특별시 강남구 논현1동 124-33 5000 60
21 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 75 75
22 010-3100-3561 서울특별시 강남구 삼성동 34-33 1000 65
23 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 65 65
24 010-4780-3740 서울특별시 강남구 논현1동 124-33 1000 60
25 010-3539-9712 서울특별시 강남구 역삼동 682-20 431호 7000 100
26 010-3100-3561 서울특별시 강남구 삼성동 34-33 2000 63
27 010-2068-6634 서울특별시 강남구 논현동 116-3 1000 120
28 010-8456-3090 서울특별시 강남구 테헤란로14길 45 1층(역삼동) 70 70
29 010-6573-9788 서울특별시 강남구 삼성동 34-25 1층 1000 70
30 010-8345-4383 서울특별시 강남구 역삼동 617-4 8000 55
31 010-8886-5877 서울특별시 강남구 봉은사로25길 13 1층(논현동) 68 68
32 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 4000 40
33 010-4667-8638 서울특별시 강남구 남부순환로 2917, 106호(대치동) 14000 70
34 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 10000 100
35 010-8626-8554 서울특별시 강남구 논현로 111길 14, 1층(논현동) 6000 50
36 010-4776-8102 서울특별시 강남구 봉은사로26길 30 1층(역삼동) 100 100
37 010-4780-3740 서울특별시 강남구 논현1동 124-33 3000 100
38 010-4166-1970 서울특별시 강남구 논현동 108 웰스톤상가 B101 1000 85
39 010-3015-2251 서울특별시 강남구 역삼동 696-10 1층 75 75
40 010-3100-3561 서울특별시 강남구 삼성동 34-33 1000 63
41 010-7777-4079 서울특별시 강남구 논현동 149-32 1F 500 65
42 010-3100-3561 서울특별시 강남구 삼성동 34-33 3000 75

In [10]:
connection.close()