without haste but without rest
bson 데이터 json 변환 스크립트 본문
import json
def remove_id(bson):
result = []
for col in bson:
if col == '_id':
continue
result.append(col)
return result
def preprocess_bson(bson, column_list):
result = {}
for column in column_list:
result[column] = bson[column]
return result
def extract_record(bson_dummy) -> list:
result = []
for bson in bson_dummy:
column_list = remove_id(bson)
record = preprocess_bson(bson, column_list)
result.append(record)
return result
# return json file on memory
def to_json(record_list):
json_data = json.dumps(record_list, ensure_ascii=False, indent=4)
return json_data
# save as a json file
def save_as_file(file_name, record_list):
with open('{}'.format(file_name), 'w', encoding='utf-8') as file:
json.dump(record_list, file, ensure_ascii=False, indent=4)
def read_json(file_name):
with open(file_name, 'r', encoding='utf-8') as file:
result = json.loads(file.read())
return result
몽고디비 bson 데이터 json으로 변환하려고 라이브러리 찾다가 그냥 만들었다. 마이그레이션 하면서 굳이 _id 컬럼은 필요가 없어서 해당 컬럼 날리고 나머지 필드만 가져와서 json으로 변환한다.
extract_record 함수의 리턴값을 용도에 따라서 to_json, save_as_file 두 개 중에서 골라서 사용하면 된다.
- to_json 함수는 bson 데이터 레코드들을 리스트에 담은 파라미터를 받아서 메모리 상에 json 데이터로 올린다
- save_as_file 함수는 bson 데이터 레코드들을 리스트에 담은 파라미터로 받아서 filename으로 저장한다. ex) "/c/mongo/sample.json"
'ProgrammingLanguage > Python' 카테고리의 다른 글
[python] [ [0] * n ] * m 과 [ [0] * n for _ in range(m) ] 의 차이 (1) | 2021.04.28 |
---|---|
[python] 달의 마지막 일자 구하기 (0) | 2021.02.16 |
[python] json dump 메소드 사용시 한글 깨짐 현상 (0) | 2021.02.05 |
[python] 모듈 미설치 예외처리 샘플 (0) | 2021.01.04 |
[python] 순열, 조합 (경우의 수) 내장 라이브러리 샘플 코드 (0) | 2020.09.08 |
Comments