Maison >développement back-end >Tutoriel Python >Explication détaillée d'exemples de sqlalchemy en js

Explication détaillée d'exemples de sqlalchemy en js

零下一度
零下一度original
2017-07-20 20:17:352049parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn