[개발 B] 개발 프로젝트에서 GPT 사용하기


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 답변



명령어에 따라 필요한 항목을 정리해 드리겠습니다.


  1. MySQL 서버 설치: MySQL 데이터베이스 서버가 필요하며, 설치되어 있지 않다면 설치해야 합니다.

  2. Python MySQL 라이브러리 설치: SQLite 대신 MySQL을 사용하기 위해서는 MySQL을 위한 Python 라이브러리가 필요합니다. PyMySQL 또는 MySQL-connector-python을 사용할 수 있습니다.

    pip install PyMySQL

    또는

    pip install MySQL-connector-python
  3. 데이터베이스 설정 변경: 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 데이터베이스에 접속할 정보를 담은 딕셔너리입니다.

  4. SQL 쿼리 수정: MySQL은 SQLite와 다르게 몇몇 SQL 쿼리가 다를 수 있습니다. 예를 들어, AUTOINCREMENT 키워드가 MySQL에서는 AUTO_INCREMENT로 다릅니다.

  5. 테이블 생성 쿼리 변경: create_db.py의 테이블 생성 쿼리도 MySQL에 맞게 변경해야 합니다.

  6. 환경변수에 MySQL 설정 추가: .env 파일 또는 환경변수에 MySQL 데이터베이스 접근 정보를 저장하면 좋습니다.

  7. 테스트: 모든 변경이 끝나면 코드가 잘 작동하는지 테스트가 필요합니다.

  8. 백업: SQLite 데이터베이스에서 중요한 데이터를 백업해 두는 것이 좋습니다.

  9. 문서 업데이트: 데이터베이스를 변경했다면 관련 문서나 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()

# ...


GPT 고맙습니다... 😭


1

(채용) 콘텐츠 마케터, AI 엔지니어, 백엔드 개발자

지피터스의 수 천개 AI 활용 사례 데이터를 AI로 재가공 할 인재를 찾습니다

👉 이 게시글도 읽어보세요