Python을 기반으로 개발을 진행하였습니다.
1. MongoDB와 연동하기
MongoDB와 MongoDBCompass가 다운이 완료된 상황부터 진행 하겠습니다.
MongoDB를 GUI 환경에서 확인할 수있도록 지원하는 프로그램이 MongoDBCompass입니다.
MongoDBCompass에서 Database를 만들어줍니다.
Database Name과 Collection name를 작성해줍니다.
이때 Collection는 아래의 이미지 설명대로 RDBMS의 Tables와 동일합니다.
Create Database를 클릭하게 되면 아래의 이미지와 같이 Database가 생성되게 됩니다.
player_test1에 들어가게 되면 Data가 하나도 들어가 있지 않은 Collection을 확인 할수 있습니다.
2. Database 연동하기
* 위의 설명에서 만든 Database와 별개로 기존에 만들었던 Database에 저장을 했습니다. 이제 부터 기존에 만들었던 pubg_test Database와 그안에 있는 player_json Collection에 작업을 진행합니다.
원하시는 Database를 만들고 해당하는 Database와 연동하시어 사용하시면 됩니다.
파이썬에서 만들어 놓은 DB에 데이터를 저장하기 위해 우선적으로 연결을 해야합니다.
그러기 위해서는 pymongo모듈을 설치해야합니다.
pip install pymongo
설치가 완료 되면 pymongo안의 MongoClient를 사용해 연결하는 코드를 입력해줍니다.
* 아래의 코드는 연결하는 코드를 쉽게 보여드리기 위해 작성된 연습용 코드입니다. 3번 부터는 게임 데이터를 사용한 DB입력 입니다.
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017/")
db = client['pubg_test'] # pubg_test 이라는 이름의 데이터베이스에 접속
print(client.list_database_names())
# 결과
# ['admin', 'config', 'local', 'pubg_test', 'pubg_test1']
pubg_test1 Database가 잘 만들어 졌고 파이썬에서 연동 된것을 확인 할 수 있습니다.
3. Database에 데이터 삽입하기
pubg_test Database안에 player_json 이라는 이름의 Collection에 데이터를 삽입합니다.
# PLAYERS API를 불러와 몽고DB에 삽입하는 함수
def insert_player_data(db, header, user_name):
url = f'https://api.pubg.com/shards/kakao/players?filter[playerNames]={user_name}'
response = requests.get(url, headers=header)
# 불러온 PLAYERS API를 player_json_data에 넣습니다.
player_json_data = response.json()
# player_json_data를 연동한 DB(pubg_test)안의 player_json Collection에 삽입합니다.
db.player_json.insert_one(player_json_data)
# MongoDB Compass에서 생성한 pubg_test Database와 연동합니다.
client = MongoClient("mongodb://localhost:27017/")
db = client['pubg_test']
username = 'zpdldptmxlsw'
api_key = "your_api_key"
header = {
"Authorization": api_key,
"Accept": "application/vnd.api+json"
}
코드를 실행한후 MongoDB Compass에서 결과를 확인하면 데이터가 들어간것을 확인 할 수있습니다.
Database에 들어간 데이터 역시 확인할 수있습니다.
3. Database에서 데이터 가져오기
find() 함수를 사용해서 데이터를 불러올 수 있습니다.
# player_json collection에 들어있는 데이터를 가져오는 함수
def get_player_data(db):
return db['player_json'].find()
# 가져온 PLAYERS API에서 ID정보만 추출하는 함수
def get_player_match_ids(player_data):
for index in player_data:
return pd.DataFrame(index['data'][0]['relationships']['matches']['data'])
가져온 데이터를 사용하여 게임데이터 분석#4의 코드에 이어서 작성한후 실행 시키게 되면 이미지가 잘 나오는것을 확인 할 수있습니다.
https://big-data97.tistory.com/57
[게임 데이터 분석 #4-1] TELEMETRY API를 활용해 판별 MAP 이미지 위에 이동 경로 그리기
Python을 기반으로 개발을 진행하였습니다. 1. TELEMETRY 정보 불러오기 get_img 함수를 실행하면 이름을 입력하라고 합니다. 그때 user_name(닉네임)을 입력하면 해당 유저의 이동경로를 판별로 확인할
big-data97.tistory.com
4. 추가 개발 수정 사항
Database에 들어간 데이터들은 user를 필터링 할 수 있는 변수를 가지고 있지 않습니다. 때문에 유저 이름을 검색한다 하더라도 Database에 들어 있는 모든 데이터를 가져오게 됩니다. 그렇게 되면 user를 검색하는 의미가 없어지게 됩니다.
따라서 user를 식별할 수있는 정보 user_name을 data에 추가하여 Database에 삽입한 후 데이터를 불러올 때 user_name별로 필터링을 하는 과정을 추가해야 합니다.
'게임 데이터 분석' 카테고리의 다른 글
[게임 데이터 분석 #7] DB데이터 사용 및 지도에 자지장 그리기 (1) | 2023.07.02 |
---|---|
[게임 데이터 분석 #6] Mysql 설치, 연동 및 DB에서 데이터 가져오기 (0) | 2023.07.01 |
[게임 데이터 분석 #4-1] TELEMETRY API를 활용해 판별 MAP 이미지 위에 이동 경로 그리기 (1) | 2023.06.25 |
[게임 데이터 분석 #4] TELEMETRY API를 활용해 MAP 이미지 위에 이동 경로 그리기 (0) | 2023.06.19 |
[게임 데이터 분석 #3] chicken-dinner를 활용한 리플레이 애니메이션 출력하기 (0) | 2023.06.14 |