ホームページ  >  記事  >  バックエンド開発  >  jsでのsqlalchemyの例を詳しく解説

jsでのsqlalchemyの例を詳しく解説

零下一度
零下一度オリジナル
2017-07-20 20:17:351953ブラウズ

SQLalchemy には 2 つの戻り値の型があり、1 つは Model オブジェクト、もう 1 つは Query コレクション (一部のフィールドのクエリのみ) です。

これら 2 つの戻り結果については、すべて同じ型 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。