개발/Python

Python isinstance Decimal 확인 오류

과녁스 2019. 3. 20. 10:28


Skip to end of metadata

Go to start of metadata

 

내용

python isinstance를 통해서 Decimal 클래스를 확인하지 못하는 현상 확인

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

 

원인

  • decimal.Decimal 클래스가 Google App Engine SDK 내부 어딘가에서 패치된 것(또는 모듈을 다시 로드)으로 추즉 됨(stackoverflow 내용)
    • 이 현상은  MySQL conversions 라이브러리가 decimal을 import 할 때와 사용자가 같은 것을 import 하는 사이에 발생 됨
    • 자세한 내용 추가 확인 필요
    • 관련 내용 바로가기

 

조치

  •  MySQL conversions 테이블을 업데이트
    • 조치에 대한 내용 확인 필요

 

from MySQLdb.constants import FIELD_TYPE
from MySQLdb.converters import conversions
import decimal
 
 
conversions[FIELD_TYPE.DECIMAL] = conversions[FIELD_TYPE.NEWDECIMAL] = decimal.Decimal
  
if isinstance(o, conversions[FIELD_TYPE.DECIMAL]):
    return str(o)