Rumah >pembangunan bahagian belakang >Tutorial Python >js中sqlalchemy的实例详解

js中sqlalchemy的实例详解

零下一度
零下一度asal
2017-07-20 20:17:352027semak imbas

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序列化了。

Atas ialah kandungan terperinci js中sqlalchemy的实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn