js中sqlalchemy的實例詳解

零下一度
發布: 2017-07-20 20:17:35
原創
1983 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!