※제로베이스 데이터 취업스쿨 11기 수강 중
📗 40번째 공부 내용 요약
첫번째 SQL 과제를 수행하였다.
EDA 과제로 수행했던 스타벅스, 이디야 매장 데이터를 수집하고 처리하는 과정을 Python에서 SQL을 활용해 Database에 테이블로 저장하고, 요구하는 데이터들을 SQL 쿼리문으로 조회하는 과제였다.
과제 내용을 구체적으로 기재할 수 는 없어, 과정에서 복습한 내용들을 작성해본다.
📖 40번째 공부 내용 자세히
1. 파이썬에서 MySQL 활용
■ Create Connection
MySQL에 접속
import mysql.connector
#AWS RDS에 연결
remote = mysql.connector.connect(
host = '<hostname>',
port = <portnumber>,
user = '<username>',
password = '<password>',
database = '<dbname>' #특정 Database에 접속
)
■ Execute SQL
Query 실행
mycursor = mydb.cursor() #읽어올 데이터 양이 많을 경우 buffered=True
mycursor.execute( <query> )
■ Fetch All
쿼리 조회 결과 확인
mycursor.excute(<query>)
result = mycursor.fetchall()
for data in result:
print(data)
■ 데이터프레임의 내용을 테이블에 넣기
sql = 'INSERT INTO police_station VALUES (%s, %s)'
for i, row in df.iterrows():
cursor.execute(sql, tuple(row))
print(tuple(row))
conn.commit()
2. MySQL 문법
■ DataBase 생성
CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4
■ Table 생성
NOT NULL, AUTO_INCREMENT, PRIMARY KEY, FORIEGN KEY 생성
CREATE TABLE tablename
(
column1 datatype NOT NULL AUTO_INCREMENT,
column2 datatype NOT NULL,
column3 datatype,
...
CONSTRAINT constraint_name
PRIMARY KEY (column1, column2, ...),
CONSTRAINT constraint_name
FOREIGN KEY (column3, column4, ...) REFERENCES REF_tablename(REF_coumn)
);
■ INSERT - 데이터 추가
INSERT INTO tablename (column1, column2 ...)
VALUES (vlaue1, value2, ...);
■ COUNT - 총 갯수 계산
SELECT COUNT(column)
FROM tablename
WHERE condition;
■ Forien Key 활용
JOIN하여 Foreign Key를 기준으로 두 테이블을 연관시켜 검색할 수 있다
SELECT c.police_station, p.address
FROM crime_status c, police_station p
WHERE c.reference = p.name
GROUP BY c.police_station;
'''
+----------------+-----------------------------------------------------------+
| police_station | address |
+----------------+-----------------------------------------------------------+
| 강남 | 서울특별시 강남구 테헤란로 114길 11 |
| 강동 | 서울특별시 강동구 성내로 33 |
| 강북 | 서울특별시 강북구 오패산로 406 |
| 강서 | 서울특별시 양천구 화곡로 73 |
3. 파이썬 예외처리
num1 = int(input('num1 : '))
num2 = int(input('num2 : '))
try:
print(f'num1 / num2 = {num1/num2}')
except Exception as e:
print(f'exception : {e}')
'''
num1 : 10
num2 : 0
exception : division by zero
'''
➰ 40번째 후기
첫번째 SQL 과제라서 조금 긴장하고 시작했다.
기존 EDA 과제랑은 조금 제출 양식(?)이 달라서 그 부분에서 어떻게 해야 되나 조금 버벅였다.
강의에서 학습하고 실습해 본 내용을 기반으로 하지만, 확실히 과제를 통해 혼자 처음부터 끝까지 그 과정을 해본다는 것은 엄연히 다름을 또 다시 느낄 수 있었다.
조금은 낯가렸던 파이썬에서 SQL에 접속해 활용하는 것도, 과제 덕에 다시 해보면서 헷갈렸던 거나 미숙했던 것들을 깨닫고 익힐 수 있어서 좋았다.
하면서, '이게 될까..?'고민고민 하며 작성했던 코드 들이 '이게 되네;'하며 작동될 때는 뿌듯하기도..
다른 것보다 SQL 쿼리문으로 조회한 결과들이 맞았을지가 제일 궁금하다.
수업 과 퀴즈에서는 풀고나서 바로 답을 알 수 있어서, 쿼리가 맞는지 안맞는지 금방 고칠 수 있었는데 과제에서는 온전히 내 굄으로 몇번씩 검증해보고 하는 거였어서 그 지점이 가장 달랐던 것 같다.
결과는 아직 안나와서 모르겠지만~ 데이터베이스-테이블생성-데이터조회까지 다시 해보면서 복습할 수 있던 좋은 과제였던 것 같다.
※본 내용은 제로베이스 데이터 취업 스쿨에서 제공하는 학습 내용에 기반합니다.
'제로베이스 데이터 스쿨 > 일일 스터디 노트' 카테고리의 다른 글
42번째 스터디노트 / 파이썬 EDA LEVEL 테스트 3회차 (0) | 2023.03.07 |
---|---|
41번째 스터디노트 / SQL 과제 2 - 주유소 데이터 Python으로 Database에 저장하고 사용하기 (0) | 2023.03.07 |
39번째 스터디노트 / Git Log, Git Graph, Git diff, Git Merge, Conflict (0) | 2023.02.27 |
38번째 스터디노트 / 버전관리, Git, Local Repository, Remote Repository (0) | 2023.02.24 |
37번째 스터디노트 / SQL 심화 - 서브쿼리, 스칼라 서브쿼리, 중첩 서브쿼리, 인라인뷰 (0) | 2023.02.23 |