首頁  >  文章  >  後端開發  >  js中sqlalchemy的實例詳解

js中sqlalchemy的實例詳解

零下一度
零下一度原創
2017-07-20 20:17:351954瀏覽

sqlalchemy的回傳類型有大都有兩種,一種是Model對象,一種是Query集合(只查詢部分欄位)。

針對這兩種回傳結果,都是來自同類型 sqlalchemy.orm.query.Query 

所以針對Query做對應處理,讓他回傳一個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)

  

#這樣在每次序列化的時候就可以簡單的使用

json.dumps(result1, cls=AlchemyJsonEncoder)

#來實現對結果集的json序列化了。

以上是js中sqlalchemy的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn