Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将具有非标准类型的查询结果序列化为JSON的Python方式_Python_Json_Web Services_Sqlalchemy - Fatal编程技术网

将具有非标准类型的查询结果序列化为JSON的Python方式

将具有非标准类型的查询结果序列化为JSON的Python方式,python,json,web-services,sqlalchemy,Python,Json,Web Services,Sqlalchemy,所以我正在学习如何构建一个flask Web服务,我从下面的代码开始 #... 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.

所以我正在学习如何构建一个flask Web服务,我从下面的代码开始

#...
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的特性和类库,以更具Python风格的方式处理上述情况?

是一个不错的库,用于将Python对象序列化为JSON字符串

import jsonpickle
json_str = jsonpickle.encode(obj)
还有一种方法可以在以后对其进行解码

如果您曾经序列化过SQLAlchemy模型实例(与SQL结果集相比),请确保分离它们或使它们暂时化,以避免出现问题。

是将Python对象序列化为JSON字符串的理想库

import jsonpickle
json_str = jsonpickle.encode(obj)
还有一种方法可以在以后对其进行解码


如果您曾经序列化过SQLAlchemy模型实例(与SQL结果集相比),请确保将它们分离或暂时分离,以避免出现问题。

使用dict理解。但最重要的是用它来代替这个网站。我不知道codereview.stackexchange.com网站我将来会用它来回答这类问题。使用dict理解。但大多数情况下都是使用这个网站,我不知道codereview.stackexchange.com网站,我将来会用它来回答这类问题。