인턴일기 - 2일차(파이썬, postgresql utf-8 연결 에러)

2025. 4. 2. 11:43데이터분석 인턴일기

오늘의 업무

1. 네이버API 뉴스웹크롤링 진행

2. 효과적인 기사작성에 대한 사내교육

 

오늘은 네이버 API로 뉴스를 웹크롤링 해야한다.

 웹크롤링은 Beautiful soup 이나 기본네이버에있는 API가이드를 보고 따라하면 된다. 

공부할땐 API가이드를 보고 그대로 따라했던것 같은데 다시들어갔는데 파이썬코드가 없다..왜없징?

이렇게 JAVA코드만 있다. 이부분 나중에 다시봐야겠음

 

그래서 코드는 GPT와 함께 작성했다.

금방했다! 아주 문제가없었다!

 

가지고온 데이터를 (항상 하듯이) Pandas로 데이터프레임으로 만들어서

SQL에 연결을 시키고 밀어넣는 코드를 짜려고했다.

 

회사에서쓰는건 PostgreSQL이다.

내가 써본건 MY SQL이고.. 한번만 파이썬과 연결하면 문제없이쓰니깐 다까먹었고

 

 

사용하려던 방법은 sqlalchemy에서 create_engine이었는데 엔진을 생성할때 오류가 발생한다.

import pandas as pd
from sqlalchemy import create_engine

# PostgreSQL 연결 설정
user = 'postgres'           # PostgreSQL 사용자 이름(문제발생)
password = 'password123'     # PostgreSQL 비밀번호
host = 'localhost'           # 서버 주소 (원격일 경우 IP 주소)
port = '5432'                # PostgreSQL 기본 포트
database = 'my_database'     # 사용할 데이터베이스 이름

# SQLAlchemy 엔진 생성
engine = create_engine(f'postgresql+psycopg2://{user}:{password}@{host}:{port}/{database}')

# 3. 데이터프레임을 PostgreSQL에 저장하기 (테이블 이름은 'employees'로 지정)
df.to_sql('employees', engine, if_exists='replace', index=False)

print("데이터프레임이 PostgreSQL에 성공적으로 저장되었습니다!")

 

 'utf-8' codec can't decode byte 0xbe in position 53: invalid start byte

오류화면

 

처음엔 금방 해결 될 거라고 생각했다. 인코딩이 문제면 보통 인코딩을 utf-8로 다바꾸면 되니까.

근데 바꿔도 똑같고...

SQL들어가서 Client_encoding에 utf-8로 바꾸면 된다그래서 해봤는데도 안되었다.

사수에게도.. 팀장님에게도 물어 보면서 2시간을 썼는데

 

답이없는상황에 처음으로 돌아가서 차근차근 봐보자! 라고 생각하고 보다보니

엄청난 충격......... host에 IP를 넣어야하는데 "PostgreSQL"을 넣었다.

 

변명

이것저것 아이디코드를 넣다보니 뭐가 맞는지도 모르고 이상함을 모른채로 그냥 넣었다.

 

생각해보면 IP를 넣는건 당연한건데도... 컬럼이름만보고 아니라고생각했다.

어떻게 그럴수있지?? 근데 그렇더라고???

 

5시간중에 2시간을 삽질함!

진짜..아이디 비밀번호 맨날틀리는데 이거할때도 잘틀릴줄이야

 

이건 생각보다 빨리끝낸 네이버 API 검색결과 + 데이터베이스에 데이터넣기 까지 코드는 완료

 

내일은 코드 반복하고 추가 데이터베이스 넣는걸 해야한다.

퇴근하고 집에가서 git hub 강의도 마저듣고, 빅분기 필기시험도 공부해야하는데

남은시간은 짧기만하다.

 

주말에 다시한번 복기해서 해보는것도 좋을 것 같다.

일요일에 내컴으로 재시도 하기 할일추가