본문 바로가기
게임 데이터 분석

[게임 데이터 분석 #6] Mysql 설치, 연동 및 DB에서 데이터 가져오기

by DongGoo 2023. 7. 1.

Python을 기반으로 개발을 진행하였습니다.

 

1. Mysql 및 MysqlWorkbench 설치

 

먼저 위 사이트에 접속해 설치를 합니다.

 

Login하라는 페이지가 나타나게 되면 좌측하단의 "No thanks, just start my download."를 클릭하여 아래의 페이지로 이동합니다.

 

두번째 것을 다운로드 합니다.

MySQL Installer를 사용해서 설치 시 비밀번호를 입력하는 구간이 있습니다. 해당 비밀번호는 잘 기억해두시길 바랍니다.

MySQL Installer를 실행시킨 후의 정보는 생략하겠습니다.(캡쳐를 하지 못함..)

 

MySQL과 MysqlWorkbench가 설치가 완료 되었다면 MysqlWorkbench에 접속합니다.

 

 

DB를 만들기위해 MySQL 서버로 접속 하기 위해 + 부분을 클릭합니다.

 

 

여기서 Hostname은 MySQL서버가 있는 위치를 나타내며 127.0.0.1는 내컴퓨터를 의미 합니다.

작성을 완료하였다면 ok 버튼을 클릭합니다. 

클릭하게 되면 아래와 같이 서버에 접속 할 수있는 창이 생성됩니다.

 

 

해당 창을 클릭해서 접속을 시도하게 되면 비밀번호를 입력하는 창이 나타납니다. 여기서 비밀번호는 installer를 사용해서 설치할때 생성한 비밀번호 입니다.

 

 

비밀번호를 입력하여 접속하게 되면 아래와 같은 화면이 나타납니다. 여기까지 문제가 없으셨다면 준비가 끝났습니다.

 

2. 파이썬을 사용해 MySQL DB에 연결하기

연결하기 위해선 sqlalchemy 모듈을 설치해야합니다.

pip install sqlalchemy

create_engine 함수는 데이터베이스에 연결하는 기본 인터페이스 역할을 하는 Engine 인스턴스를 생성합니다. 'mysql+pymysql://user:password@host/db'와 같은 연결 문자열을 함수에 전달하여 원하는 데이터베이스에 연결할 수 있습니다.

 

host = 'localhost' # 내컴퓨터일 경우 'localhost'
user_name = 'root'
password = 'your_password'
db = 'Database name'

database_connection = create_engine(f'mysql+pymysql://{user_name}:{password}@{host}/{db}')
df.to_sql('table_name', con=database_connection, if_exists='append', index=False)

이때 table이 없을경우 해당 table_name으로 테이블을 새로 생성합니다.

if_exists매개변수는 디폴트 값은 fail입니다. if_exists 매개변수다음 세 가지가 있습니다.

  1. 'fail' (기본값): 만약 지정된 테이블 이름이 이미 데이터베이스에 있다면, 아무 작업도 수행하지 않고 ValueError를 발생시킵니다.
  2. 'replace': 지정된 테이블 이름이 이미 데이터베이스에 있는 경우, 해당 테이블을 삭제하고 새로운 테이블을 생성한 다음 데이터 프레임의 데이터를 삽입합니다.
  3. 'append': 지정된 테이블 이름이 이미 데이터베이스에 있다면, 기존 테이블에 데이터 프레임의 데이터를 추가합니다. 이 때, 기존 테이블과 데이터 프레임의 스키마가 동일해야 이 옵션을 사용할 수 있습니다.

데이터를 삽입한후 MySQL Workbench에 들어가 테이블을 조회해보면 잘 나와있을 것을 확인할 수 있습니다.

test_db database안의 pubg_db_test라는 테이블에 삽입했습니다.

 

 

이제 맵위에 이미지를 그리기 위해 DB에 저장한 data를 불러옵니다.

database_connection = create_engine(f'mysql+pymysql://{user_name}:{password}@{host}/{db}')
sql = f"SELECT DISTINCT id, user_name FROM pubg_db_test where user_name = '{username}'"
player_match_ids_df = pd.read_sql(sql, con=database_connection)

sql문을 작성하여 id의 중복을 제거하고 검색한 유저의 정보만 추출합니다.

추출한 데이터는 player_match_ids_df에 데이터 프레임 형태로 저장합니다. 이는 판다스의 pd.read_sql 함수를 통해 간단하게 구현이 가능합니다.

 

게임 데이터 분석 #4-1의 코드와 잘 조합하게 되면 Database에서 추출한 데이터를 활용해 이동경로를 잘 그려주는 것을 확인 할 수 있습니다.

 

https://big-data97.tistory.com/57

 

[게임 데이터 분석 #4-1] TELEMETRY API를 활용해 판별 MAP 이미지 위에 이동 경로 그리기

Python을 기반으로 개발을 진행하였습니다. 1. TELEMETRY 정보 불러오기 get_img 함수를 실행하면 이름을 입력하라고 합니다. 그때 user_name(닉네임)을 입력하면 해당 유저의 이동경로를 판별로 확인할

big-data97.tistory.com

3. 이슈

  1. Database에 저장할때 불러온 데이터를 모두 저장하기 때문에 중복되는 데이터가 많아지게 됩니다.
    Database에 저장되는 용량을 줄이기 위해 중복을 제거한 후 DB에 저장하는 방법을 생각해야합니다.

다음은 비행기 경로와 낙하 위치등을 추가로 그리는 방법을 구현하겠습니다.