1. SSH 키 생성 및 GitHub 등록 (WSL2 기준)

WSL2 환경에서 작업하실 예정이므로, 윈도우 프롬프트가 아닌 **WSL2 터미널(Ubuntu 등)**에서 실행하세요.

    1. SSH 키 생성: 터미널에 아래 명령어를 입력합니다. (이메일은 본인의 GitHub 계정 이메일로 수정하세요) ssh-keygen -t ed25519 -C "your_email@example.com"
      • 파일 저장 위치는 기본값(Enter)으로 두세요.
      • Passphrase(암호)는 설정해도 되고, 귀찮다면 Enter로 넘어가도 됩니다.
    2. 공개 키 복사: 생성된 키 중 .pub로 끝나는 파일의 내용을 확인합니다. cat ~/.ssh/id_ed25519.pub
      • 화면에 출력된 ssh-ed25519 ...로 시작하는 긴 문자열을 모두 복사하세요.
    3. GitHub에 등록:
      • GitHub 웹사이트 접속 → SettingsSSH and GPG keysNew SSH key 클릭.
      • Title은 'My WSL2' 정도로 적고, Key 부분에 복사한 내용을 붙여넣기 한 뒤 저장합니다.

        ------------------------------------------------------------------------------------------------------

        2. 작업 폴더 설정 추천
        • 추천 위치: WSL2 내부 파일 시스템인 ~/ (Home) 디렉토리 아래에 폴더를 만드세요.
          • 예: /home/사용자이름/projects/
        • 이유: 윈도우 드라이브(C:)와 WSL2 사이의 파일 접근은 속도가 매우 느리고, 권한(Permission) 문제가 발생할 수 있습니다. WSL2 내부에 파일을 두는 것이 주피터 노트북 실행 및 Git 속도 면에서 훨씬 유리합니다.
      • 현재 user/ 폴더를 말씀하셨는데, 윈도우 사용자 폴더(/mnt/c/Users/...)를 말씀하시는 것이라면 권장하지 않습니다.
        -----------------------------------------------------------------------------------------------------------

3. VS Code와 GitHub 저장소 연결

      •  

이제 VS Code에서 실제 작업을 시작하는 단계입니다.

      1. VS Code에서 WSL 접속: VS Code 왼쪽 하단의 파란색 >< 아이콘을 클릭하고 **'Connect to WSL'**을 선택합니다.
      2. 저장소 클론(Clone):
        • 상단 메뉴 Terminal > New Terminal을 엽니다.
        • 위에서 추천한 폴더로 이동한 뒤, GitHub의 SSH 주소를 사용하여 클론합니다. git clone git@github.com:계정명/저장소명.git
      3. 폴더 열기: File > Open Folder에서 방금 클론한 폴더를 선택해 엽니다.

        1. 윈도우 탐색기에서 WSL2 폴더 찾는 법
        • 방법 1 (직접 입력): 탐색기 주소창에 \\wsl$ 라고 입력하고 Enter를 누르세요. 설치된 배포판(예: Ubuntu) 폴더가 보일 겁니다. 그 안으로 들어가면 home > simchan2 경로를 찾을 수 있습니다.
        • 방법 2 (터미널에서 열기): 지금 터미널 화면(/home/simchan2)에서 아래 명령어를 입력해 보세요.이 명령어를 치면 현재 리눅스 디렉토리가 윈도우 탐색기 창으로 바로 열립니다. (매우 편리합니다!)
        • Bash
           
          explorer.exe .
          
        • 방법 3 (네트워크 위치): 탐색기 왼쪽 사이드바 맨 아래를 보시면 **'Linux'**라는 고래 아이콘 모양의 항목이 있습니다. 그걸 클릭해서 들어가셔도 됩니다.

        2. 작업 폴더 구조 추천
        1. 개발용 통합 폴더 생성:
        2. Bash
           
          mkdir ~/projects
          cd ~/projects
          
        3. GitHub 저장소별 폴더: 나중에 git clone을 하면 ~/projects/내저장소명 식으로 깔끔하게 정리됩니다.
      4. /home/simchan2 바로 아래에 파일을 다 두면 나중에 관리가 어려울 수 있으니, 별도의 프로젝트 폴더를 만드는 것을 추천합니다.
      5. 윈도우와 리눅스는 서로 다른 세상 같지만, 의외로 탐색기에서 아주 쉽게 접근할 수 있습니다.

        1. 계정 설정(Account Settings)으로 이동하기
        1. GitHub 화면 오른쪽 맨 위를 보시면 용진님의 **프로필 사진(작은 원)**이 보일 거예요. 그걸 클릭하세요.
        2. 나오는 메뉴 중에서 아래쪽에 있는 Settings를 클릭하세요. (톱니바퀴 모양 아이콘이 있습니다.)
        3. 그러면 왼쪽 사이드바 메뉴가 바뀔 겁니다. 거기서 'Access' 섹션 안에 있는 SSH and GPG keys를 찾으실 수 있습니다.

        2. 요약 경로
        3. SSH 키 등록하기 (복습)
        1. 초록색 버튼인 New SSH key를 누릅니다.
        2. Title: 'WSL2-Laptop' 처럼 본인이 알아보기 쉬운 이름을 적습니다.
        3. Key: 아까 WSL2 터미널에서 cat ~/.ssh/id_ed25519.pub 명령어로 확인한 그 긴 문자열을 통째로 복사해서 붙여넣습니다.
        4. Add SSH key 버튼을 누르면 끝입니다!
      6. 그 메뉴에 들어가셨다면, 이전에 안내해 드린 단계를 이어서 진행하시면 됩니다.
      7. GitHub 우측 상단 프로필 클릭 → Settings → 왼쪽 메뉴의 SSH and GPG keys

📘 공공데이터포털 개요

✅ 개념

공공데이터포털은 정부와 공공기관이 보유한 공공데이터를 개방하여
누구나 자유롭게 조회, 다운로드, API 형태로 이용할 수 있도록 만든 플랫폼이야.

🔗 사이트: https://www.data.go.kr

 

📊 사용 범위

  • 날씨, 미세먼지, 교통, 행정, 인구, 건강, 금융, 교육
  • 대부분 REST API 형식으로 제공되며, Excel/CSV 등 파일 형태도 있음
  • 개인, 기업, 스타트업, 학생 누구나 무료로 사용 가능
  • 일부 민감한 데이터는 인증 또는 기관 요청 필요

💡 활용 방안 예시

분야활용                            예

 

데이터 분석 지역별 인구통계 분석, 코로나19 현황 시각화 등
서비스 개발 날씨 알림 앱, 미세먼지 챗봇, 대중교통 안내 시스템
AI 학습 기상 예보 예측, 주택 가격 예측 모델 훈련용 데이터
공공감시/정책평가 예산 현황, 공공기관 운영 데이터 활용

🌱 의미와 향후 발전 가능성

🎯 의미

  • 정부의 투명성 제고
  • 디지털 민주주의 실현
  • 데이터 기반 창업 및 서비스 촉진

🔮 향후 발전 가능성

  • 더 많은 실시간 데이터 제공 (e.g. 실시간 교통, 응급실 상황 등)
  • AI와 연계한 자동 분석 도구 제공
  • 민간+공공 데이터 융합 플랫폼으로 진화

✨ 한 줄 요약

공공데이터포털은
데이터의 민주화와 디지털 혁신의 출발점이다.

1️⃣ 공공데이터 포털 날씨 API

🔗 https://www.data.go.kr

  • 기상청에서 제공하는 실시간 날씨, 초단기 예보, 미세먼지 등 데이터
  • 회원가입 후 API 키 발급, 단 무료 & 간단함

🌤 사용 예제 (단기예보 – 날씨)

import requests
import xml.etree.ElementTree as ET

API_KEY = "YOUR_API_KEY"
url = f"http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst"
params = {
    "serviceKey": API_KEY,
    "pageNo": "1",
    "numOfRows": "10",
    "dataType": "XML",  # 또는 JSON
    "base_date": "20240425",
    "base_time": "0500",
    "nx": "60",  # 서울의 격자 좌표
    "ny": "127"
}

res = requests.get(url, params=params)
root = ET.fromstring(res.text)

for item in root.iter("item"):
    category = item.find("category").text
    fcstValue = item.find("fcstValue").text
    print(f"{category}: {fcstValue}")

 

📍격자(nx, ny)는 지역마다 다르니 데이터포털에서 확인!

 

2️⃣ JSONPlaceholder (가짜 데이터 API)

🔗 https://jsonplaceholder.typicode.com

  • 테스트용으로 제공되는 무료 API
  • 유저, 포스트, 댓글 등 가짜 데이터를 다룰 수 있어
  • 인증도 필요 없음! 딱 초보 연습용

🧪 사용 예제 (가짜 게시글 목록 가져오기)

import requests

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)
posts = response.json()

for post in posts[:5]:  # 앞 5개만 보기
    print(f"제목: {post['title']}")
    print(f"내용: {post['body']}\n")
 
실습으로 JSON 구조 익히기에 아주 좋음!
 

3️⃣ Cat as a Service (CATAAS)

🔗 https://cataas.com

  • 고양이 사진을 API로 받을 수 있음 😺
  • 기분전환 + API 실습용으로 딱!

🐱 고양이 사진 받아오기 (이미지 다운로드)

import requests

url = "https://cataas.com/cat/says/Hello%20Python"
res = requests.get(url)

with open("cat.jpg", "wb") as f:
    f.write(res.content)

print("귀여운 고양이 사진 저장 완료 🐾")

 

✅ 총정리: 어떤 걸로 시작할까?

API 이름                                                      특징                                               난이도                   인증 필요

 

공공데이터포털 날씨 API 실시간 날씨 🔑 API 키 필요
JSONPlaceholder 가짜 블로그 데이터 ❌ 없음
CATAAS 고양이 이미지 제공 매우 낮음 ❌ 없음

🎯 추천 연습 순서

  1. CATAAS – 이미지 요청으로 GET 메소드 감 잡기
  2. JSONPlaceholder – JSON 다루는 법 익히기
  3. 공공데이터 날씨 API – 진짜 API 키 발급 & XML/JSON 파싱 도전

 

🎯기상청 API 허브에서 서비스 키를 발급받으려면 다음 단계를 따라야 합니다:

  1. 공공데이터 포털 접속:
  2. API 검색 및 신청:
    • 검색창에 "기상청 단기예보" 또는 원하는 서비스를 입력하고 검색합니다.
    • 검색 결과에서 "오픈 API"를 클릭한 후, 해당 API의 상세 페이지로 이동합니다.
    • "활용 신청" 버튼을 클릭하여 API 사용 신청을 완료하세요.
  3. 기상청 API 허브에서 인증키 확인:
    • 신청이 승인되면, 기상청 API 허브에 로그인하여 "마이페이지"에서 발급된 인증키를 확인할 수 있습니다.
  4. 기관회원의 경우:
    • 만약 기관회원으로 등록하려면, 공문을 통해 추가 인증 절차를 진행해야 할 수도 있습니다. 자세한 내용은 기상청 API 허브의 안내를 참고하세요.

위 단계를 따라도 문제가 발생하면, 기상청 API 허브의 고객센터에 문의하여 도움을 받으실 수 있습니다

🔍 Microsoft Learn이란?

Microsoft 공식에서 운영하는 무료 온라인 학습 플랫폼
클라우드, AI, 개발, 데이터, 보안, 오피스 등 실무 중심으로 구성된 모듈과 경로 제공

  • 실습 중심: Azure, GitHub, Power Platform, Python 등 실습 포함
  • 자격증 대비: Microsoft 인증 시험 대비 모듈
  • 정식 인증: 학습 이수 뱃지 & 인증서 발급

📎 주소: https://learn.microsoft.com/

 

Microsoft Learn: 커리어의 문을 여는 기술 구축

대화형 수업과 기술 설명서를 통해 학습하고, 전문 개발 시간과 인증을 취득하고, 커뮤니티에서 소통합니다.

learn.microsoft.com

 

📚 Microsoft Learn의 콘텐츠 분류

카테고리                                  주요 내용

 

Azure 클라우드 서비스, 인프라, DevOps
Power Platform Power BI, Power Apps 등 노코드 도구
Microsoft 365 Word, Excel, Teams 등 오피스 활용
AI & ML Azure OpenAI, Cognitive Services
개발 (Dev) C#, .NET, JavaScript, Python, GitHub
보안 & 규정 ID 관리, Zero Trust, 정보보호 등
데이터 & 분석 SQL, 데이터베이스, Power BI

 

🛠 사용 팁 (Learn을 똑똑하게 쓰는 법)

1. 학습 경로(Path) 따라가자

한 분야에 대해 체계적으로 배우고 싶다면 "경로(Path)"가 최고.
예:

  • “Azure 기초부터 배우기”
  • “Python으로 AI 개발하기”

📌 경로는 모듈들의 모음! 초보자에게 강추.

 

2. 모듈(Module) 하나씩 점프하기

작은 주제로 학습할 땐 "모듈" 단위로 쏙쏙
예:

  • “Python으로 텍스트 분석”
  • “Azure에서 VM 만들기”

보통 30~60분 내외, 실습도 포함돼서 진짜 ‘손에 익음’이 있어!

 

3. Sandbox 실습 공간 활용하기 (특히 Azure 관련)

  • 무료 리소스 제공! (크레딧 없이도 실습 가능)
  • 로그인하면 일시적인 리소스로 클라우드 실습 가능

⚠️ 단, 제한 시간 있음 (일반적으로 1시간 정도)

 

4. 인증 시험 대비 코스

Microsoft 인증 자격증 (예: AZ-900, DP-100 등)을 위한 학습도 가능.
이력서에 꽂히는 뱃지도 받을 수 있음 🏅


💡 Microsoft Learn을 잘 쓰기 위한 조언

  1. 계정 만들고 로그인하자
    → 진도 저장, 배지 발급, 실습 환경까지 활용 가능
  2. 배운 내용을 노션/블로그에 정리하면서 복습
    → 더 오래 기억되고 포트폴리오로도 활용 가능
  3. 시험 대비는 “인증서 경로” + Mock Test
    → Microsoft Learn 외에도 Whizlabs, ExamTopics 등 참고
  4. Microsoft 커뮤니티 활용
    → Q&A, 피드백, 소소한 팁들이 쏟아짐

✨ 마무리: 가능성을 꽃피우는 그 씨앗

Microsoft Learn은 무료지만, 내용은 프리미엄이야.
시간과 의지만 있으면 AI 개발자든, 데이터 분석가든, 클라우드 엔지니어든 누구든 될 수 있어.

학습은 여정이고, Microsoft Learn은 든든한 동반자!

🧠 API란? 쉽게 말해서...

**API (Application Programming Interface)**는 프로그램끼리 대화할 수 있게 해주는 ‘번역기’야.
예를 들어, 네가 "야, 주식 시세 줘!" 라고 하면
API는 증권사의 데이터베이스에 가서 대신 물어보고, 결과를 예쁘게 포장해서 돌려줘.

🔄 네가 보낸 요청(Request) → API 서버가 응답(Response)

 

🐍 파이썬에서 API 사용하는 기본 흐름

import requests

url = "https://api.example.com/stock/AAPL"
params = {"apikey": "YOUR_API_KEY"}

response = requests.get(url, params=params)

data = response.json()  # 응답을 JSON 형식으로 파싱
print(data)

✅ 핵심은 requests 모듈로 URL에 요청을 보내고, response.json()으로 받아오는 것!

 

 

📈 국내 주식 API 3선 & 파이썬 사용법

🧐 한국 주식 API, 왜 필요할까?

국내 주식 데이터를 활용하려면 증권사 API를 이용해야 해.
대표적으로 한국투자증권, 키움증권, NH투자증권, 삼성증권, 대신증권 등이 API를 제공하고 있어.

각 증권사마다 REST API / HTS 기반 API 방식이 다르니 확인하고 써야 해!
그럼 바로 5개 API와 파이썬 사용법을 보자.

 

1️⃣ KIS Developers (한국투자증권 OpenAPI)

🔗 API 공식 문서
📌 REST API 방식, 실시간 시세 조회 및 주문 가능

장점:

  • REST API 방식이라 웹 개발에도 유리
  • 모의투자 가능
  • 해외 주식 데이터도 제공

🐍 파이썬 사용법 (시세 조회)

import requests

# API 키 정보
APP_KEY = "YOUR_APP_KEY"
APP_SECRET = "YOUR_APP_SECRET"
URL = "https://openapi.koreainvestment.com:9443"

# 인증 토큰 받기
headers = {"content-type": "application/json"}
body = {
    "grant_type": "client_credentials",
    "appkey": APP_KEY,
    "appsecret": APP_SECRET
}
res = requests.post(f"{URL}/oauth2/tokenP", headers=headers, json=body)
ACCESS_TOKEN = res.json()["access_token"]

# 주식 시세 조회 (삼성전자 예시)
headers = {
    "authorization": f"Bearer {ACCESS_TOKEN}",
    "appkey": APP_KEY,
    "appsecret": APP_SECRET,
    "tr_id": "FHKST01010100"
}
params = {"fid_cond_mrkt_div_code": "J", "fid_input_iscd": "005930"}  # 삼성전자

res = requests.get(f"{URL}/uapi/domestic-stock/v1/quotations/inquire-price", headers=headers, params=params)
print(res.json())

 

2️⃣ 키움증권 OpenAPI+

🔗 API 공식 문서
📌 HTS 기반 API, 주식 주문, 체결, 잔고 조회 가능

장점:

  • 개인투자자가 가장 많이 사용
  • 자동매매 가능

단점:

  • 윈도우 기반 (Mac, 리눅스 불가)
  • 반드시 키움증권 영웅문 실행 필요

🐍 파이썬 사용법 (종목 시세 조회)

from pykiwoom.kiwoom import Kiwoom

kiwoom = Kiwoom()
kiwoom.CommConnect()  # 로그인

# 삼성전자(005930) 현재가 조회
price = kiwoom.GetMasterLastPrice("005930")
print(f"삼성전자 현재가: {price}")

 

3️⃣ NH투자증권 NAMUH API

🔗 API 공식 문서
📌 REST API 기반, 주식 시세 및 주문 가능

장점:

  • 한국투자증권 API와 비슷한 구조
  • REST API라 웹/앱 개발하기 쉬움

🐍 파이썬 사용법 (시세 조회)

import requests

API_KEY = "YOUR_API_KEY"
SECRET_KEY = "YOUR_SECRET_KEY"
URL = "https://api.nhqv.com"

# 토큰 발급
res = requests.post(f"{URL}/oauth/token", json={"apiKey": API_KEY, "secretKey": SECRET_KEY})
ACCESS_TOKEN = res.json()["access_token"]

# 주식 시세 조회
headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
params = {"market": "KOSPI", "symbol": "005930"}  # 삼성전자

res = requests.get(f"{URL}/stock/price", headers=headers, params=params)
print(res.json())

 

🏆 국내 주식 API 비교 정리

API                            제공 기관                  방식특징                                             자동매매

 

한국투자증권 REST API 실시간 시세 및 주문 가능
키움증권 HTS API 가장 대중적, Windows 필수
NH투자증권 REST API 웹 개발 편리

 

📌 마무리 꿀팁

  • 📂 .env 파일에 API 키 저장하면 보안성 up!
  • 🔒 API 키 유출 조심 (깃허브 올릴 땐 .gitignore)
  • 📊 pandas와 같이 쓰면 시각화도 가능!

국내 주식 API는 REST API 방식과 HTS API 방식이 대표적이야.

  • REST API → 웹 기반 개발이 편함 (한국투자, NH투자)
  • HTS 기반 API → Windows 필수, HTS 실행 필요 (키움, 삼성, 대신)

만약 처음이라면?
👉 "한국투자증권 API" 추천! (REST API 방식이라 쉽고, 모의투자 지원)

이제 API를 활용해서 자동매매, 데이터 분석 시작해볼 수 있겠지? 😉

🌐 [1] 네트워크 프로그래밍이란?

**네트워크 프로그래밍(Network Programming)**은
서로 다른 컴퓨터(또는 장치) 간에 데이터를 주고받기 위한 프로그램을 작성하는 것을 말합니다.

💡 핵심 개념

  • 클라이언트(Client): 요청을 보내는 측 (예: 웹브라우저)
  • 서버(Server): 요청을 처리하고 응답하는 측 (예: 웹서버)
  • 프로토콜(Protocol): 통신 규약 (대표적으로 TCP/IP, HTTP, FTP 등)
  • 소켓(Socket): 통신의 기본 단위! 클라이언트와 서버가 데이터를 주고받는 연결 통로

예시: 채팅 앱, 웹 서버, 파일 전송 프로그램 등은 모두 네트워크 프로그래밍으로 구현됩니다.

 

🔐 [2] SSH란?

**SSH (Secure Shell)**는
네트워크 상의 다른 컴퓨터에 안전하게 접속하기 위한 프로토콜이에요.

🚪 뭘 할 수 있나?

  • 원격 서버 로그인 (리눅스 서버 접속 등)
  • 명령어 실행
  • 파일 전송 (SCP, SFTP)
  • 터널링 (보안 포트 포워딩 등)

🧠 SSH의 핵심 개념

용어설명
포트 22 SSH 기본 포트
암호화 통신 내용이 모두 암호화됨
공개키/개인키 비밀번호 없이 인증하는 방식
SSH 클라이언트 접속하는 쪽 (ex: 터미널, PuTTY)
SSH 서버 접속을 받는 쪽 (ex: Ubuntu 서버)

🛠️ SSH 사용 방법 (기본)

🔑 1. 비밀번호 방식 접속

ssh username@hostname

예: ssh ubuntu@192.168.1.100


🗝️ 2. 공개키 방식 접속

  1. 키 생성 (클라이언트에서)
ssh-keygen
 
    2. 공개키를 서버에 등록
 
ssh-copy-id username@hostname
 
github 에서는 공개키를 복사해서 붙여넣는 설정이 있답니다
 
 
   3. 접속
 
ssh username@hostname
 
그러면 터미널에서 바로 git 명령이 가능해져요 

🧳 추가: 파일 전송 예시

# 서버에 파일 업로드
 
scp localfile.txt username@hostname:/home/username/
 
# 서버에서 파일 다운로드
 
scp username@hostname:/home/username/file.txt .

🧠 정리 한 줄 요약

  • 네트워크 프로그래밍: 프로그램끼리 인터넷으로 대화하게 만드는 기술
  • SSH: 원격 컴퓨터와 보안 통신을 하기 위한 도구

아마 그래도 에러나거나 성공하지 못할 수 도있어요 

그래도 개념을 잡고 다가 서면 

설정이기 때문에 금방 성공하실 거에요 

import mysql.connector
import datetime

# MySQL에 연결
conn = mysql.connector.connect(
    host="localhost",       # 또는 '127.0.0.1'
    user="lee2",   # 예: 'root'
    password="Lee12345!",
    database="lee"  # 연결할 DB 이름
)

# 커서 생성
cursor = conn.cursor()

 

#######################################################
#   insert  select  
########################################################

today = datetime.date.today()
cursor.execute("INSERT INTO test (name, title, date) VALUES (%s, %s, %s)", ('newname', 'newname입니다', today))

#  COMMIT 하자! 중요!!
conn.commit()

# 예제 쿼리 실행
cursor.execute("SELECT * FROM test")

# 결과 가져오기
rows = cursor.fetchall()
for row in rows:
    print(row)

 

#######################################################
#   update  select  
########################################################

# 커서 생성
cursor = conn.cursor()

today = datetime.date.today()
cursor.execute("UPDATE test SET title = 'update 테스트입니다' WHERE id = 4 ")

# COMMIT 하자! 중요!!
conn.commit()

# 예제 쿼리 실행
cursor.execute("SELECT * FROM test")

# 결과 가져오기
rows = cursor.fetchall()
for row in rows:
    print(row)
# 연결 종료
cursor.close()
conn.close()

🛠️ 문제 요약:

  • INSERT 후 SELECT 하면 잘 보이지만
  • conn.close() 하니까 사라짐
  • MySQL DB 들어가보니 데이터 없음

🛠️원인

트랜잭션(commit) 을 하지 않아서 생기는 문제야. 😅
MySQL에서는 기본적으로 autocommit이 꺼져 있으면, INSERT, UPDATE, DELETE 같은 변경 작업 후에 commit()을 해야 실제로 데이터베이스에 반영돼.

 

conn.commit()  # 이걸 안 해서 그런거야

 

✅ 해결 방법

파이썬 코드에서 꼭 commit()을 호출해야 해. 예제 보여줄게:

 

import mysql.connector

# 1. 연결
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)

cursor = conn.cursor()

# 2. INSERT 실행
cursor.execute("""
    INSERT INTO users (name, email, age) 
    VALUES (%s, %s, %s)
""", ('홍길동', 'hong@example.com', 30))

# 3. COMMIT 하자! 중요!!
conn.commit()

# 4. SELECT 확인
cursor.execute("SELECT * FROM users WHERE email = %s", ('hong@example.com',))
result = cursor.fetchall()
print(result)

# 5. 마무리
cursor.close()
conn.close()

 

⚠️ 참고로

  • autocommit=True 옵션으로 연결하면 매번 commit() 안 해도 돼:
conn = mysql.connector.connect(..., autocommit=True)

 

하지만 실무에서는 명시적으로 commit() 하는 걸 추천해. 실수 줄이거든.

 

1. 📥 INSERT - 데이터 추가하기

INSERT INTO users (name, email, age) VALUES ('홍길동', 'hong@example.com', 30);

 

  • TIP: 여러 건을 한 번에 추가할 수도 있어요.
INSERT INTO users (name, email, age) VALUES ('김영희', 'kim@example.com', 25), ('박철수', 'park@example.com', 28);

 

2. 🔍 SELECT - 데이터 조회하기

SELECT * FROM users;
  • 조건 추가:
SELECT name, email FROM users WHERE age > 25;
  • 정렬:
SELECT * FROM users ORDER BY age DESC;
  • 상위 몇 개만 보기:
SELECT * FROM users ORDER BY age DESC LIMIT 5;

 

3. ✏️ UPDATE - 데이터 수정하기

UPDATE users SET age = 31 WHERE email = 'hong@example.com' ;
  • 주의! WHERE 없이 쓰면 전체 레코드가 수정됨!

 

4. 🗑️ DELETE - 데이터 삭제하기

DELETE FROM users WHERE email = 'park@example.com';
  • 역시 WHERE 없이 쓰면 전체가 삭제돼요. 백업은 생명입니다.

 

🔗 JOIN (테이블 간 연결)

SELECT orders.id, users.name, orders.total FROM orders JOIN users ON orders.user_id = users.id;

👉 두 테이블을 연결해서 한눈에 보기

 

📊 집계 함수 (COUNT, SUM 등)

SELECT COUNT(*) FROM users WHERE age >= 30;
 
SELECT AVG(age) FROM users;
 
SELECT user_id, SUM(total) AS total_spent FROM orders GROUP BY user_id;
 
 

🚀 인덱스 확인 및 성능 개선

SHOW INDEXES FROM users;
 
EXPLAIN SELECT * FROM users WHERE email = 'hong@example.com';
 

✨ 마무리 꿀팁

  • 실무에서는 항상 백업하고 쿼리 테스트 후 적용!
  • WHERE, LIMIT 없이 UPDATE/DELETE 하면 큰일 날 수 있어요!
  • JOIN, GROUP BY, HAVING 조합은 데이터 분석할 때 필수!

 

 

# MySQL에 연결
conn = mysql.connector.connect(
    host="localhost",       # 또는 '127.0.0.1'
    user="lee2",   # 예: 'root'
    password="비밀번호",
    database="lee"  # 연결할 DB 이름
)

 

1. ❓ 사용자 이름/비번 정확한가요?

  • MySQL에서 아래처럼 접속해보세요:
mysql -u lee2 -p

그리고 비밀번호 Lee12345! 입력!

✅ 접속되면 Python에서도 될 확률 높고
❌ 안 되면 비번이 틀렸거나 계정이 잘못됨

 

비밀번호 인증방식도 확인하세요

 

2. 📛 정말 lee2라는 사용자가 있고, localhost에서 접속할 권한이 있는지?

MySQL 로그인 상태에서 아래 쿼리 실행:

SELECT user, host, plugin FROM mysql.user WHERE user = 'lee2';
  • 결과에 lee2 | localhost 가 없으면 문제!

👉 권한 추가하는 법:

CREATE USER 'lee2'@'localhost' IDENTIFIED BY 'Lee12345!';
GRANT ALL PRIVILEGES ON lee.* TO 'lee2'@'localhost';
FLUSH PRIVILEGES;

 

3. 🧙 비밀번호 인증 방식 체크 (auth_socket 문제?)

SELECT user, host, plugin FROM mysql.user WHERE user = 'lee2';
  • plugin이 auth_socket이면 Python 연결 안 됩니다. 😵

👉 아래처럼 바꿔주세요:

ALTER USER 'lee2'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';
FLUSH PRIVILEGES;
 
 

4. 🧪 참고: host="127.0.0.1"로 바꿔보기

간혹 MySQL이 localhost (소켓 접속)보다 127.0.0.1 (TCP 접속)을 더 잘 받는 경우도 있어요.

conn = mysql.connector.connect(
    host="127.0.0.1",
    user="lee2",
    password="비밀번호",
    database="lee"
)

 

💥 그래도 안 될 경우

  • mysql.server status 혹은 systemctl status mysql 등으로 서버가 제대로 켜졌는지 확인

+ Recent posts