Re: register_adapter Json with custom JSONEncoder
От | Hans Ginzel |
---|---|
Тема | Re: register_adapter Json with custom JSONEncoder |
Дата | |
Msg-id | 20200720111854.GA63808@artax.karlin.mff.cuni.cz обсуждение исходный текст |
Ответ на | Re: register_adapter Json with custom JSONEncoder (Daniele Varrazzo <daniele.varrazzo@gmail.com>) |
Список | psycopg |
On Mon, Jul 13, 2020 at 05:15:19PM +0100, Daniele Varrazzo wrote: >You can use a partial function for instance, of the like of: `lambda >obj: Json(obj, dumps=mydumps)`. Thank you, Daniele. I have (succesfully) tried from psycopg2.extras import Json from json import JSONEncoder from bson import ObjectId class JSONEncoder(JSONEncoder): def default(self, o): if isinstance(o, ObjectId): return str(o) return supper().default(self, o) jsonEncoder = JSONEncoder() #psycopg2.extensions.register_adapter(dict, Json) psycopg2.extensions.register_adapter(dict, lambda o: Json(o, dumps=jsonEncoder.encode)) and variants like import json psycopg2.extensions.register_adapter(dict, lambda o: Json(o, dumps = lambda oo: json.dumps(oo, default=str))) or from bson import json_util psycopg2.extensions.register_adapter(dict, lambda o: Json(o, dumps=json_util.dumps)) I choosed the first one because of cached Encoder and cleanest way. Best regards, Hans
В списке psycopg по дате отправления: