Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung von Beispielen für SQLalchemie in js

Detaillierte Erläuterung von Beispielen für SQLalchemie in js

零下一度
零下一度Original
2017-07-20 20:17:352003Durchsuche

SQLalchemy hat zwei Rückgabetypen, einen ist ein Modellobjekt und der andere ist eine Abfragesammlung (fragt nur einige Felder ab).

Diese beiden Rückgabeergebnisse stammen beide vom selben Typ sqlalchemy.orm.query.Query

Also führen wir die entsprechende Verarbeitung für Query durch und lassen ein Diktat zurückgeben

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)

 

Auf diese Weise können Sie es einfach bei jeder Serialisierung verwenden

json.dumps(result1, cls=AlchemyJsonEncoder)

Um die JSON-Serialisierung des Ergebnissatzes zu implementieren.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Beispielen für SQLalchemie in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn