-
[멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터 분석 개론 : Pandas - SQL 연동TIL 2025. 2. 13. 17:53
학습 목표
- ALTER TABLE 명령으로 테이블 구조 변경하기
- Python과 SQL 연동하기
1. ALTER TABLE
1) 열 추가 (ADD COLUMN)
after name -- name 컬럼 다음에 배치 2) 열 삭제 (DROP COLUMN)
3) 열 이름 변경 (CHANGE COLUMN)
4) 열 데이터 타입 변경 (MODIFY COLUMN)
BIGINT -- 큰 정수 값 (8 bytes) 5) 기본 키 변경 (ADD/DROP PRIMARY KEY)
email 열은 NULL이어서 기본 키 변경 error 6) 테이블 이름 변경 (RENAME TO)
7) 인덱스 추가 및 삭제 (ADD/DROP INDEX)
ALTER TABLE staff ADD INDEX idx_name (name); -- 인덱스 추가 ALTER TABLE staff DROP INDEX idx_name; -- 인덱스 삭제
INDEX -- 자주 검색하는 컬럼에 검색 속도를 빠르게 할 수 있도록 함
8) 유니크(UNIQUE) 제약 조건 추가
ALTER TABLE company_data ADD CONSTRAINT unique_emp_name UNIQUE (emp_name);
UNIQUE -- 중복된 값이 들어가지 못하도록 제한
9) CHECK 제약 조건 추가
ALTER TABLE company_data ADD CONSTRAINT check_salary CHECK (monthly_salary >= 3000000);
CHECK -- 컬럼에 저장될 값이 특정 조건을 만족해야 하도록 제한
2. Python - SQL 연동
[Step 1] SSH 터미널 : Maria DB 초기 설정
-- change directory cd / -- 루트 디렉토리(최상위) cd var -- make directory sudo mkdir gm-lab3 -- SuperUser DO (관리자 권한 실행) sudo chmod -R 777 gm-lab3 -- 디렉토리의 owner, group, others에게 r, w, x 권한 부여 cd gm-lab3 -- Maria DB 설치 sudo apt update && sudo apt upgrade sudo apt-get install mariadb-server -- MariaDB(Mysql) 데이터베이스 생성 sudo mysql –u root –p -- 엔터 CREATE DATABASE backend default CHARACTER SET UTF8; show databases; use backend; -- user 생성 GRANT ALL PRIVILEGES ON backend.* TO [아이디]@localhost IDENTIFIED BY '비밀번호'; -- exit하고 로그인 -- -- 파이썬 설치 sudo apt-get update sudo apt-get install python3-pip -- 라이브러리 설치 pip install mysql-connector-python pandas
sudo chmod -R 777
이 새끼가 날 힘들게 함
저거 한 줄 빼먹었더니 영원히 날 권한 없다고 꺼지라 함
* 7 = 4 (읽기) + 2 (쓰기) + 1 (실행) / 755 = 소유자는 모두 권한, 다른 사람은 읽기와 실행만 가능. 이런 식
[Step 2] 연동할 py 파일 생성
import mysql.connector import pandas as pd # 1. MariaDB 연결 설정 db_config = { "host": "localhost", # MariaDB 서버 주소 "user": "아이디", # 사용자 이름 "password": "1234", # 비밀번호 "database": "backend" # 사용할 데이터베이스 } # MariaDB 연결 conn = mysql.connector.connect(**db_config) cursor = conn.cursor() # 2. 테이블 생성 cursor.execute("DROP TABLE IF EXISTS employees;") # 이미 존재하면 삭제 후 생성 cursor.execute(""" CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT, department VARCHAR(50), salary DECIMAL(10,2) ); """) # 3. 샘플 데이터 생성 (pandas DataFrame 활용) data = { "name": ["Alice", "Bob", "Charlie", "David", "Eve"], "age": [25, 30, 35, 28, 40], "department": ["HR", "IT", "Finance", "Marketing", "IT"], "salary": [50000, 70000, 80000, 60000, 90000] } df = pd.DataFrame(data) # 4. 데이터 삽입 insert_query = "INSERT INTO employees (name, age, department, salary) VALUES (%s, %s, %s, %s)" values = [tuple(row) for row in df.to_numpy()] cursor.executemany(insert_query, values) conn.commit() print("데이터 삽입 완료") # 5. 데이터 조회 및 pandas DataFrame으로 변환 cursor.execute("SELECT * FROM employees") rows = cursor.fetchall() # 컬럼명 가져오기 column_names = [desc[0] for desc in cursor.description] df_result = pd.DataFrame(rows, columns=column_names) # 6. 결과 출력 (pandas 기본 출력 방식 사용) print("\n=== Employees Table Data ===") print(df_result.to_string(index=False)) # 인덱스 없이 출력 # CSV로 저장 (필요한 경우) df_result.to_csv("employees_data.csv", index=False, encoding="utf-8") print("데이터를 'employees_data.csv' 파일로 저장하였습니다.") # 연결 종료 cursor.close() conn.close()
[Step3] FileZilla : py 파일을 디렉토리에 업로드
사이트 관리자 - 호스트 : 업로드할 SSH의 외부 IP인지 확인 디렉토리에 py 파일 업로드 [Step 4] 터널에서 py 스크립트 실행
Python3 main.py 연습 문제
: 제시된 표를 py 파일로 생성해 MariaDB에 업로드하기
# 1.
어머 제목 출력값 안 바꿨네 ^^;; #2.
csv 파일도 다 잘 들어오심
블로그 챌린지는 그날 배운 내용을 정리하되 밀린 복습은 주말을 활용하기루 함
이게 당연?할 지도? ;;이제 프렌즈 아이드롭 쿨하이 사러갈게요,,
'TIL' 카테고리의 다른 글
[멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터수집 및 전처리 : API (1) 2025.02.17 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터 분석 개론 : Pandas - SQL 연동 (2) (1) 2025.02.14 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터 분석 개론 : SQL (2) (5) 2025.02.12 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터 분석 개론 : Pandas (2) (1) 2025.02.11 [멋쟁이사자처럼 부트캠프 그로스 마케팅] 데이터 분석 개론 : Pandas (1) (2) 2025.02.10