저번시간에 했던 GCP VM 인스턴스 만들고 환경설정하는 법과 mariaDB 및 파이썬 설치 파이썬과 SQL 연동실습했던 것을 복습해 보았다.
VM 인스턴스 만들고 환경설정하기
먼저 구글 클라우드 플랫폼에 접속하여 계정을 만들고 무료로 시작하기를 클릭한다. VISA나 MASTER 신용/체크카드를 미리 준비해서 등록하고 무료제공 3개월을 뽑아먹어보자.
계정 생성후 Compute Engine으로 들어가서 VM 인스턴스를 클릭한다.
그 다음 인스턴스 만들기를 클릭한다.
머신 구성에서 이름을 설정하고 (소문자, 숫자, - (하이픈)만 가능), 리전은 서울을 찾아서 설정한다.
OS 및 스토리지에 들어가서 변경을 눌러 부팅디스크를 ubuntu로 설정하고 버전은 ubuntu 20.04 LTS를 클릭하고 선택을 누른다. (현재 실습에서 unbutu 사용중이고, ubuntu가 한국에서 가장 많이 쓰인다고 함.)
그다음 네트워킹으로 들어가 HTTP 트래픽 허용, HTTPS 트래픽 허용을 설정하고 만들기를 누른다.
고급 탭으로 들어가면 API 기본 엑세스가 자동으로 모두 허용으로 되어있는데 이를 유지해놓는 것이 좋다.
만들기를 누르고 나면 새 인스턴스가 생성된 것을 볼수 있다. 새로 보이는 외부 IP 주소로 FTP클라이언트 (Filezilla)와 연결할 수 있다.
서버 연결을 위해선 SSH키를 생성해야 하는데 본인컴이 windows라면 windows를 지원하는 PuTTY gen을 이용해서 쉽게 생성할 수 있다. (Mac OS 에서는 ssh-keygen 명령어를 사용해서 터미널에서 할 수 있다고 하는데 나중에 알아보자^^;)
PuTTY gen을 아래 사이트에서 본인 컴퓨터에 맞는 파일을 설치하자.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
설치된 파일 중
이 아이콘을 누르자.
Generate를 누르고 저 빈 key화면에서 마우스를 굴려줘야 진행이 빨리 된다. (제일 황당하고 웃긴 부분;;;)
key부분(public key)은 따로 복사해서 메모장에 붙여넣고 파일을 잘 저장해두자. (sublime text 프로그램을 이용해 저장하는 것이 안전하다.)
key comment 부분은 그대로 저장하는것이 안전하다. (생성된 키의 암호화 알고리즘과 날짜를 식별할 수 있도록)
Save private key를 눌러 키파일로 저장해두자.
따로 폴더를 만들어 파일들을 같이 저장해두는 것이 관리하기 좋다.
GCP에서 메타데이터에 들어가 ssh 키를 누르고 복사해두었던 public key를 붙여넣는다.
기존 키가 있어도 수정탭에 들어가 수정하거나 추가할 수 있다.
Filezilla(파일질라)를 검색해 Filezilla client를 다운받는다.
파일질라를 실행한 후 왼쪽 위 아이콘 그림을 클릭하여 새 사이트를 누른다.
프로토콜은 SFTP로 설정해준다.
호스트에는 VM인스턴스에서 생성한 인스턴스의 외부 IP를 복사하여 붙여넣어준다.
로그온 유형은 키파일로 설정해준다.
사용자에는 Putty gen에서 만들었던 key comment를 복사해서 붙여넣어준다.
( 사용자 이름을 키 이름으로 맞춰줘야 키 파일로 로그인이 된다.)
그리고 키파일에 아까 저장해두었던 private key 파일을 찾아 올려준다.
확인 클릭.
GCP에서 VPC네트워크에서 방화벽을 클릭한다.
방화벽 규칙 만들기를 클릭한다. - 방화벽은 외부서버 해킹시도를 막기 위한것이다.
방화벽 규칙 이름은 원하는대로 입력한다.
니머지 설정들은 그대로 둔다.
대상은 어떤 인스턴스에 해당 규칙을 적용할지 설정하는 것이다.
네트워크의 모든 인스턴스를 클릭해준다.
소스 필터/ 범위는 접속이 가능한 IP를 설정해주는 것이다.
0.0.0.0/0 으로 설정해준다. ( 전세계 모든 곳에서 접속이 가능함.)
프로토콜 및 포트에서 접속을 허용할 IP를 지정해준다.
접속을 허용할 포트만 지정해서 입력해 준다. (ex. tcp 5000)
실습용이니 모두허용을 눌러 만들기를 누른다.
mariaDB 설치
VM 인스턴스에서 만든 인스턴스의 SSH를 눌러 터미널로 들어간다.
cd / 입력
sudo apt update 입력
sudo apt install mariadb-server -y 입력
sudo systemctl start mariadb
sudo systemctl enable mariadb
차례대로 입력
sudo mysql -u root -p 입력해서 MariaDB 실행
CREATE DATABASE 만들이름; 입력해서 데이터베이스만들기
CREATE USER '만들이름'@'localhost' IDENTIFIED BY '만들비번'; 사용자계정 생성하기 (이 사용자는 로컬서버에만 접속이 가능)
SHOW DATABASES; 입력하여 내가 만든 데이터베이스 확인
SELECT User, Host FROM mysql.user; 입력하여 내가만든 사용자계정 확인하기.
GRANT ALL PRIVILEGES ON 만든데이터베이스이름.* TO '만든사용자계정'@'localhost'; 를 눌러 내가 만든 happy 데이터베이스에 대한 모든 권한을 부여하자. (제발 데이터베이스이름 뒤에 점 빼먹지 말자..)
다시 ctrl + c를 눌러 MariaDB를 빠져나간뒤 mysql -u 만든사용자계정 -p 를 눌러 잘 접속이 되나 확인하자.
use 만든데이터베이스이름; 을 입력하여 내가 만든 데이터베이스에 들어갈 수 있다.
파이썬 설치
터미널에서 sudo apt-get update 입력
sudo apt-get install python3-pip 입력
pip install mysql-connector-python pandas 입력 (필요 라이브러리 설치)
(이미 블로그 쓰기전 기존에 설치하여 설치되었다고 뜸)
파이썬과 SQL 연동하여 데이터 분석 해보기
< 그로스 마케팅 지표 계산하는 코드 >
import mysql.connector # mysql을 불러오기
import pandas as pd # pandas를 pd로 별칭
# 1. MariaDB 연결 설정 (접속정보를 정의해 놓은 것)
db_config = {
"host": "localhost", # MariaDB 서버 주소
"user": "haha", # 사용자 이름
"password": "8520", # 비밀번호
"database": "happy" # 사용할 데이터베이스
}
# host 는 서버주소이고 localhost인 이유는 파이썬 실행파일과 MariaDB가 같은 서버에 있기 때문이다.
# 아니라면 IP주소가 필요함.
# MariaDB 연결
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
# comm은 객체(mysql 통신부분)이고 mysql.connector.connect는 연결 메서드이다.
# (**db_config)은 딕셔너리 코드를 언팩킹하는 것이다.
# 2. 테이블 생성 (이미 존재하면 삭제 후 생성)
cursor.execute("DROP TABLE IF EXISTS growth_marketing;")
cursor.execute("""
CREATE TABLE growth_marketing (
id INT AUTO_INCREMENT PRIMARY KEY,
campaign_name VARCHAR(100),
date DATE,
impressions INT,
clicks INT,
conversions INT,
cost DECIMAL(10,2),
revenue DECIMAL(10,2)
);
""")
# cursor.execute > 파이썬에서 데이터베이스와 상호작용할때 쓰는 함수
# (MariaDB에서 SQL 쿼리를 실행할 때 사용)
# "DROP TABLE IF EXIST ......;" > 혹시 같은 이름의 파일이 있으면 삭제를 해라.
# """ > 여러줄을 쓸때 사용 (멀티라인)
# 3. 샘플 데이터 생성 (pandas DataFrame 활용)
data = {
"campaign_name": ["Google Ads", "Facebook Ads", "Instagram Ads", "YouTube Ads", "LinkedIn Ads"],
"date": ["2025-02-01", "2025-02-02", "2025-02-03", "2025-02-04", "2025-02-05"],
"impressions": [10000, 15000, 12000, 18000, 11000],
"clicks": [500, 750, 600, 900, 550],
"conversions": [50, 70, 60, 80, 55],
"cost": [100000, 150000, 120000, 180000, 110000],
"revenue": [500000, 750000, 600000, 900000, 550000]
}
# 파이썬 자료형 딕셔너리형태로 되어있다. 키(컬럼명) : 밸류(데이터값) 구조
df = pd.DataFrame(data)
# 클래스. 2차원 데이터로 바뀜
# 4. 데이터 삽입 # 컬럼 이름을 써주고 그에 맞게 (%s)개수 잊지말기
insert_query = """
INSERT INTO growth_marketing (campaign_name, date, impressions, clicks, conversions, cost, revenue)
VALUES (%s, %s, %s, %s, %s, %s, %s)
"""
values = [tuple(row) for row in df.to_numpy()] #2차원 배열로 변환
cursor.executemany(insert_query, values)
conn.commit()
# cursor.executemany > 명령어를 여러개 처리해라
# conn.commit() > 이 내용을 DB에 반영해라
print("데이터 삽입 완료")
# 5. 데이터 조회 및 지표 계산 (데이터 조회 및 pandas DataFrame으로 변환)
cursor.execute("SELECT * FROM growth_marketing")
rows = cursor.fetchall()
# 컬럼명 가져오기
column_names = [desc[0] for desc in cursor.description]
df_result = pd.DataFrame(rows, columns=column_names)
# cursor.description > 시퀀스 변수
# df_result > 컬럼이름과 데이터가 담겨있음.
# 6. 그로스 마케팅 지표 계산 (CTR, CVR, ROAS)
df_result["CTR (%)"] = (df_result["clicks"] / df_result["impressions"]) * 100
df_result["CVR (%)"] = (df_result["conversions"] / df_result["clicks"]) * 100
df_result["ROAS (%)"] = (df_result["revenue"] / df_result["cost"]) * 100
# 7. 결과 출력 (pandas 기본 출력 방식 사용)
print("\n=== Growth Marketing Performance Metrics ===")
print(df_result[["campaign_name", "date", "CTR (%)", "CVR (%)", "ROAS (%)"]].to_string(index=False))
df_result.to_string(index=False) # > 문자열로 변환해라.
# CSV로 저장 (필요한 경우)
df_result.to_csv("growth_marketing_metrics.csv", index=False, encoding="utf-8-sig")
print("지표 데이터를 'growth_marketing_metrics.csv' 파일로 저장하였습니다.")
# 파이썬 파일이 있는 위치에 csv파일 저장해라.
# 연결 종료
cursor.close()
conn.close()
실습 예제 코드를 Sublime text에서 파이썬파일(.py)로 저장한다. 찾기쉬운 경로에 저장하자.
터미널로 돌아와서 파이썬 파일을 저장할 폴더를 하나 만들어주자.
sudo mkdir /var/만들폴더이름 을 입력한다.
sudo, mkdir, /var/myfolder 사이에 반드시 띄어쓰기가 필요하다. (오류 많이 났다^^..)
파일질라에서 새로고침 (동글뱅이 아이콘) 을 눌러서 오른쪽창에 var로 가보면 만든 폴더가 있음을 확인해 볼 수 있다.
터미널에서
sudo chmod 777 /var/myfolder 를 입력하여 모든 사용자에게 모든 권한을 부여하자. (띄어쓰기 제발 주의)
- chmod 777 → 소유자, 그룹, 다른 사용자 모두에게 읽기, 쓰기, 실행 권한 부여
- sudo → 관리자 권한으로 실행
ls -li 눌러서 내용을 확인하면
drwxrwxrwx 이렇게 써 있으면 모든 권한이 부여된 것이다.
파일질라에 들어와서 왼쪽 창에서 내가 저장한 파이썬 파일을 찾아 왼쪽창에서 내가 만든 폴더를 찾아서 아래에 드래그 해서 옮겨붙이자.
cd 명령어로 내가 파이썬 파일을 저장했던 폴더 위치로 이동한 다음
python3 만든파일이름.py 를 입력하자. (제발 .py까지 입력하자. 제발 앞글자 소문자 p 쓰자.)
파일이 저장되면 위와 같이 뜨고 아까 파이썬 파일에서 그로스 마케팅 지표 계산한 내용의 부분이 뜬다.
파이썬 코드에서 print()로 출력한 데이터라서 Maria DB에서 조회하면 뜨지 않는다.
이걸 다시 보고 싶으면 python3 growth_marketing.py 를 다시 입력하여야 한다....
아까 위에 터미널에서 그로스 마케팅 지표 계산을 출력해서 보여줬던 파이썬 코드
다시 내 계정으로 MariaDB에 접속하고 난 뒤에
내가 생성한 데이터베이스에 들어온다.
SELECT * FROM 만든테이블명; 을 입력하면 아까 파이썬파일에서 입력된 코드가 이렇게 MariaDB로 출력된다.
SQL 명령어는 소문자로 입력해도 실행되지만 되도록 대문자로 쓰는 것이 좋다 ^^;
이렇게 파이썬과 SQL을 연동하면 더 효율적으로 작업할 수 있다.
복습해보니
직접 명령어를 쳐보니 오타가 아주 작렬이었다.
따라서 직접 명령어를 치려면 미리 Sublime Text나 메모장에 붙여넣고 오타확인하고 다시 터미널에 붙여넣자.
(심지어 localhost를 lacalhost라고 쳐서 계정만들고 어? 왜 로그인이 안되지? 이러고 있었다...^^)
눈 뚱그렇게 떠도 오타발견이 힘들면 복사 긁어다가 챗지피티한테 물어보면 아주 친절히 오타를 잡아준다^^..
(복사긁을땐 드래그하고 오른쪽 버튼 눌러다가 복사하자. ctrl + c 누르면 mariaDB에서 나가지기 때문^^..)
'데이터 분석 part' 카테고리의 다른 글
웹 크롤링 개요 (0) | 2025.02.16 |
---|---|
웹서비스 구현 - 게시판 만들어보기 (0) | 2025.02.16 |
MariaDB ALTER TABLE / Python과 SQL연동 / 헷갈리는 개념 다시 정리 (0) | 2025.02.13 |
mariaDB에서 여러테이블 다루기(JOIN,UNION), 집계 함수와 그룹화 (0) | 2025.02.13 |
MariaDB로 SQL 다뤄보기 (1) | 2025.02.11 |