Django对从DB返回到JSON格式的ORM模型有一些很好的自动序列化。
如何将SQLAlchemy查询结果序列化为JSON格式?
我试过jsonpickle.encode
,但它对查询对象本身进行编码。
我试过json.dumps(items)
但它返回了
TypeError: <Product('3', 'some name', 'some desc')> is not JSON serializable
将SQLAlchemy ORM对象序列化为JSON/XML真的那么难吗?没有默认的序列化程序吗?序列化ORM查询结果是当前非常常见的任务。
我需要的只是返回SQLAlchemy查询结果的JSON或XML数据表示。
javascript datagird(JQGridhttp://www.trirand.com/blog/)中需要使用JSON/XML格式的SQLAlchemy对象查询结果
简单的实现
你可以用这样的东西:
然后使用以下命令转换为JSON:
它将忽略不可编码的字段(将它们设置为“无”)。
它不会自动扩展关系(因为这可能导致自引用,并永远循环)。
递归的、非循环的实现
但是,如果您希望永远循环,您可以使用:
然后使用以下方法对对象进行编码:
这将编码所有的孩子,所有的孩子,所有的孩子。。。基本上可以对整个数据库进行编码。当它到达之前编码的东西时,它会将其编码为“无”。
递归的,可能是循环的,选择性的实现
另一个可能更好的选择是能够指定要展开的字段:
您现在可以用以下方法调用它:
例如,只扩展名为“parents”的SQLAlchemy字段。
您可以将RowProxy转换为如下所示的dict:
然后将其序列化为JSON(必须为诸如
datetime
值之类的内容指定编码器) 如果你只想要一条记录(而不是一个完整的相关记录层次结构),这并不难。您可以将对象作为字典输出:
然后使用
User.as_dict()
序列化对象。如Convert sqlalchemy row object to python dict所述
相关问题 更多 >
编程相关推荐