""" SQLAlchemy JSON Encoder ======================= JSON Encoder for query objects returned from SQLAlchemy. Since some common data types from databases are not JSON serializable, this encoder returns str of unsupported types """ from datetime import datetime from decimal import Decimal from datetime import date import json from sqlalchemy.orm.state import InstanceState class SQLAlchemyJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return str(obj) elif isinstance(obj, date): return str(obj) elif isinstance(obj, Decimal): return str(obj) elif isinstance(obj, InstanceState): return str(obj) return json.JSONEncoder.default(self, obj)