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 サイトの他の関連記事を参照してください。