所以我正在学习如何构建烧瓶网络服务,然后从这样的代码开始。
#...
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结果集),请确保您要么分离或使其瞬时避免问题。