python flask로 datetime 자동 변환하기

웰시코딩·2020년 12월 1일
0

python pymysql을 이용하여 database에 있는 datetime type의 data를 가져올 때 문제점이 있습니다. 바로 mysql에 있는 값이 가져오면 python에서는 tuple으로 변하게 됩니다. 아래를 참고 하시기 바랍니다.

database : 2020-11-20 15:17:37

python : datetime.datetime(2020, 11, 20, 15, 17, 37)

이렇게 이상한 tuple형식으로 반환하는 이유는 python의 기본 json 인코더가 모든 종류의 데이터베이스 쿼리에서 흔히 볼 수있는 자체 datetime 유형을 지원하지 않고 있기 때문에 위와 같은 상황이 발생합니다. 물론 strftime() 함수를 이용하여 아래와 같이 손쉽게 해당 데이터를 불러 올 때 string화 해주는 방법도 있습니다.

SELECT strftime('%H %M %S %s','now');

하지만 매번 datetime type의 data를 가져올 때 마다 작성하면 불편하기 때문에, python flask에서 지원해주는 JSONEncoder를 이용하면, json형식을 가져올 때 특정 type의 형태를 customizing을 할 수 있습니다.

import decimal
import datetime
from flask.json import JSONEncoder

class CustomJSONEncoder(JSONEncoder):
    def default(self, obj):

        if isinstance(obj, decimal.Decimal):
            return float(obj)

        if isinstance(obj, datetime.datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')

        return JSONEncoder.default(self, obj)

def create_app():

    app = Flask(__name__)
    app.json_encoder = CustomJSONEncoder
profile
코딩하자멍

0개의 댓글

관련 채용 정보