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)
Out[5]:
In [6]:
# 기존에 직방 API 크롤링을 통해서 생성한 CSV 파일을 불러오겠습니다.
room_df = pd.read_csv("crawling/zigbang_room.csv")
room_df
Out[6]:
In [7]:
# 지금까지 추가된 row 데이터 제거
# SQL_QUERY
SQL_QUERY = """
DELETE FROM fastroom;
"""
cursor.execute(SQL_QUERY)
Out[7]:
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]:
In [10]:
connection.close()