Как десериализовать SQLAlchemy JSON в десятичное с использованием Flask-SQLAlchemy - PullRequest
0 голосов
/ 25 мая 2018

Мой код работает для сериализации объекта, который имеет Decimal и хранится в JSON в моем PostgreSQL, используя этот пост здесь , я использую Flask-SQLAlchemy, поэтому создал свой собственный пользовательский apply_driver_hacks метод передачи json_serializer, который сериализует Decimal объектов - так что пока все хорошо.

Однако при извлечении данных обратно десериализатор загружает эти значения как float.Я искал все выше и ниже, но не могу найти какой-либо способ перезагрузить как десятичное число - я могу передать пользовательский json_deserializer в качестве опции для Flask-SQLAlchemy, но не могу найти способ передать любое значение, такое как use_decimal=True, который я бы использовал, если бы использовал simplejson для загрузки Json с Decimal.

Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 25 мая 2018

Передайте вызываемый объект, который передает parse_float=decimal.Decimal в json.loads() как json_deserializer.Простая функция, такая как

def json_deserializer(*args, **kwgs):
    return json.loads(*args, parse_float=decimal.Decimal, **kwgs)

должна делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...