sqlalchemy/psycopg2 将我的 json 反序列化为字典,但不保留顺序
sqlalchemy/psycopg2 desreializes my jsons as dicts but doesn't preserve order
我有一个 returns 一个 json 对象的 psql 查询。我使用 results.fetchall()
获取此查询,并正确地将 json 作为字典获取。
但是,由于我在 python 3.4 中,而不是在 3.6 中,对象的顺序未保留在字典中。我看到有 a way 使用 OrderedDict
来保持 json 的顺序,但我不确定如何告诉 sqlalchemy/psycopg2 使用它。
有人可以帮忙吗?
如 documentation 中所述,您必须在创建引擎时提供自定义反序列化器:
from functools import partial
import json, collections
engine = create_engine(
...,
json_deserializer=partial(
json.loads,
object_pairs_hook=collections.OrderedDict),
)
我有一个 returns 一个 json 对象的 psql 查询。我使用 results.fetchall()
获取此查询,并正确地将 json 作为字典获取。
但是,由于我在 python 3.4 中,而不是在 3.6 中,对象的顺序未保留在字典中。我看到有 a way 使用 OrderedDict
来保持 json 的顺序,但我不确定如何告诉 sqlalchemy/psycopg2 使用它。
有人可以帮忙吗?
如 documentation 中所述,您必须在创建引擎时提供自定义反序列化器:
from functools import partial
import json, collections
engine = create_engine(
...,
json_deserializer=partial(
json.loads,
object_pairs_hook=collections.OrderedDict),
)