pythonic方法将查询结果序列化,而不是标准类型的JSON



所以我正在学习如何构建烧瓶网络服务,然后从这样的代码开始。

#...
class Objects(Resource) :
    def get(self) :
        conn = engine.connect()
        query = conn.execute("SELECT * FROM objects")
        return {'objects' : [dict(zip(tuple(query.keys()), i)) for i in query.cursor]}
api.add_resource(objects, '/objects')`
#...

这很好,直到我遇到一个表格中带有一个字段的表格为十进制的表格,该表与上述示例不可序列化。

所以我摸索着以下内容。

class object(Resource) :
    def get(self):
        conn = engine.connect()
        query = conn.execute("SELECT * FROM objects")
        objects = []
        for row in query:
            object = {}
            for key in query.keys() :
                if(type(row[key]) is decimal.Decimal) :
                    object[key] = float(row[key])
                else :
                    object[key] = row[key]
            objects.append(object)       
        return {'objects': objects}

该代码正常工作,但我的直觉告诉我,必须有更好的写作方法。但是,我是Python的新手,但是我不确定如何进行...

如何利用Pythons功能和类库来处理上述情况?

https://jsonpickle.github.io/是一个像样的python对象,将python对象序列化为json字符串。

import jsonpickle
json_str = jsonpickle.encode(obj)

也有一种方法可以在

上进行解码。

如果您曾经序列化sqlalchemy模型实例(vs. sql结果集),请确保您要么分离或使其瞬时避免问题。

相关内容

  • 没有找到相关文章

最新更新