https://www.facebook.com/shinhancard/posts/2092431024190389/
팀 프로젝트를 진행하는 과정에서 ChatGPT의 도움을 많이 받았습니다. 어떤 식으로 도움을 받았는지 정리를 해 보았습니다. 😊
레시피 패턴
디버깅
마이그레이션
변수명 바꾸기
📝 레시피 패턴
레시피 패턴: 요리 레시피와 유사하게 이 패턴은 언어 모델에 지시하는 단계별 접근 방식입니다. 어떠한 방법의 서비스가 필요한지 step by step으로 언어화하여 물어보았습니다.
💻 ChatGPT 답변
파이썬과 Flask 웹 프레임워크를 사용하여 이메일을 통한 로그인을 구현할 수 있습니다. 아래는 간단한 예시 코드입니다.
1. Flask 설치
pip install Flask
2. 이메일 라이브러리 설치
pip install secure-smtplib
3. 코 드 작성
from flask import Flask, request, render_template, redirect, url_for
import smtplib
import random
import string
# 생략..
4. HTML 파일 (templates/index.html)
<!DOCTYPE html>
<html>
# 생략..
</html>
주의사항
이메일과 비밀번호를 입력해야 합니다.
이메일 서비스의 보안 설정에 따라 로그인이 안 될 수 있습니다.
이 코드는 예시이며, 실제 프로덕션에서는 보안을 더 고려해야 합니다.
이 코드를 실행하면 웹 서버가 시작되고, 이메일로 로그인 링크가 전송됩니다. 링크를 클릭하면 로그인이 되고 대시보드 페이지로 리다이렉트됩니다.
🔍 디버깅
에러메시지를 그대로 복붙하여 올렸습니다. 크게 코드를 바꿔야 할 에러가 아니라면, ChatGPT가 에러를 정말 잘 찾습니다.
💻 ChatGPT 답변
Address already in use 오류는 이미 해당 포트(5000)를 사용하고 있는 다른 프로세스가 있기 때문에 발생합니다. 이 문제를 해결하기 위한 몇 가지 방법이 있습니다.
방법 1: 다른 포트 사용
Flask 앱을 다른 포트에서 실행해 보세요. 예를 들어, 포트 5001을 사용하려면 아래와 같이 코드를 수정합니다.
if __name__ == '__main__':
app.run(debug=True, port=5001)
방법 2: 사용 중인 포트 해제
터미널에서 아래의 명령어를 실행하여 5000 포트를 사용하고 있는 프로세스를 찾고 종료할 수 있습니다.
macOS/Linux
lsof -i :5000
kill -9 [PID]
Windows
netstat -ano | findstr :5000
taskkill /PID [PID] /F
여기서 [PID]는 프로세스 ID입니다.
이 중 하나의 방법을 사용하여 문제를 해결해 보세요.
🚀 마이그레이션
프로젝트를 하다보니 sqlite3를 사용하다가 MySQL으로 마이그레이션해야하는 상황이 생겼습니다. 번거로운 상황에 시간까지 없었는데 ChatGPT가 신속하게 해결해주더라고요. 든든합니다.
💻 ChatGPT 답변
명령어에 따라 필요한 항목을 정리해 드리겠습니다.
MySQL 서버 설치: MySQL 데이터베이스 서버가 필요하며, 설치되어 있지 않다면 설치해야 합니다.
Python MySQL 라이브러리 설치: SQLite 대신 MySQL을 사용하기 위해서는 MySQL을 위한 Python 라이브러리가 필요합니다. PyMySQL 또는 MySQL-connector-python을 사용할 수 있습니다.
pip install PyMySQL
또는
pip install MySQL-connector-python
데이터베이스 설정 변경: database.py 파일에서 데이터베이스 연결 코드를 MySQL로 변경해야 합니다.
import pymysql class Database: def __init__(self, db_config): self.db_config = db_config def connect(self): return pymysql.connect(**self.db_config)
db_config는 MySQL 데이터베이스에 접속할 정보를 담은 딕셔너리입니다.
SQL 쿼리 수정: MySQL은 SQLite와 다르게 몇몇 SQL 쿼리가 다를 수 있습니다. 예를 들어, AUTOINCREMENT 키워드가 MySQL에서는 AUTO_INCREMENT로 다릅니다.
테이블 생성 쿼리 변경: create_db.py의 테이블 생성 쿼리도 MySQL에 맞게 변경해야 합니다.
환경변수에 MySQL 설정 추가: .env 파일 또는 환경변수에 MySQL 데이터베이스 접근 정보를 저장하면 좋습니다.
테스트: 모든 변경이 끝나면 코드가 잘 작동하는지 테스트가 필요합니다.
백업: SQLite 데이터베이스에서 중요한 데이터를 백업해 두는 것이 좋습니다.
문서 업데이트: 데이터베이스를 변경했다면 관련 문서나 README를 업데이트하는 것이 좋습니다.
🫠 변수명 바꾸기
프로젝트가 진행되다 보면 DB가 뒤집어지기도 하더라고요. 많은 양의 코드를 다시 보기 부담이 되었는데 마찬가지로 ChatGPT를 쓰니 쉽게 해결이 되었습니다.
💻 ChatGPT 답변
이러한 변수 이름을 데이터베이스 열 이름인 USER_EMAIL, TOKEN_CD 및 CREATE_DATE에 맞게 수정해 보겠습니다. 수정된 코드 세그먼트는 다음과 같습니다.
app.py
# ...
# 세션을 업데이트하는 메소드입니다.
def update_session(self, USER_EMAIL, TOKEN_CD):
conn = self.connect()
c = conn.cursor()
CREATE_DATE = datetime.now()
c.execute("UPDATE TEST SET TOKEN_CD = %s, CREATE_DATE = %s WHERE USER_EMAIL = %s", (TOKEN_CD, CREATE_DATE, USER_EMAIL))
conn.commit()
conn.close()
# 새 세션을 생성하는 메소드입니다.
def create_session(self, USER_EMAIL, TOKEN_CD):
conn = self.connect()
CREATE_DATE = datetime.now()
c = conn.cursor()
c.execute("INSERT INTO TEST (USER_EMAIL, TOKEN_CD, CREATE_DATE) VALUES (%s, %s, %s)", (USER_EMAIL, TOKEN_CD, CREATE_DATE))
conn.commit()
conn.close()
# ...