SQLalchemy a deux types de retour, l'un est un objet modèle et l'autre est une collection de requêtes (interrogeant uniquement certains champs).
Pour ces deux résultats renvoyés, ils sont tous deux du même type sqlalchemy.orm.query.Query
Nous effectuons donc le traitement correspondant pour Query et la laissons renvoyer un dict
class AlchemyJsonEncoder(json.JSONEncoder): def default(self, obj): # 判断是否是Query if isinstance(obj, Query): # 定义一个字典数组 fields = [] # 定义一个字典对象 record = {} # 检索结果集的行记录 for rec in obj.all(): # 检索记录中的成员 for field in [x for x in dir(rec) if # 过滤属性 not x.startswith('_') # 过滤掉方法属性 and hasattr(rec.__getattribute__(x), '__call__') == False # 过滤掉不需要的属性 and x != 'metadata']: data = rec.__getattribute__(field) try: record[field] = data except TypeError: record[field] = None fields.append(record) # 返回字典数组 return fields # 其他类型的数据按照默认的方式序列化成JSON return json.JSONEncoder.default(self, obj)
De cette façon, vous pouvez simplement l'utiliser à chaque fois que vous sérialisez
json.dumps(result1, cls=AlchemyJsonEncoder)
Pour implémenter la sérialisation json de l'ensemble de résultats.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!