flask_sqlalchemy 返回对象 转化

返回结果 [<apps.models.test.index.User object at 0x000001D2EDD91208>, <apps.models.test.index.User object at 0x000001D2EDA666D8>, <apps.models.test.index.User object at 0x000001D2EDD62358>]

返回数据类型 <class 'list'>

<apps.models.test.index.User object at 0x000001D2EDA666D8>

<class 'apps.models.test.index.User'>

处理结果 [{"creact_time": null, "id": 1, "name": "root", "password": "123456", "query": null, "query_class": null, "status": 1}, {"creact_time": null, "id": 2, "name": "An", "password": "123456", "query": null, "query_class": null, "status": 1}, {"creact_time": "2019-10-31 11:12:08.041", "id": 4, "name": "admin", "password": "123456", "query": null, "query_class": null, "status": 1}]

处理类型 <class 'str'>

再次处理 [{'creact_time': None, 'id': 1, 'name': 'root', 'password': '123456', 'query': None, 'query_class': None, 'status': 1}, {'creact_time': None, 'id': 2, 'name': 'An', 'password': '123456', 'query': None, 'query_class': None, 'status': 1}, {'creact_time': '2019-10-31 11:12:08.041', 'id': 4, 'name': 'admin', 'password': '123456', 'query': None, 'query_class': None, 'status': 1}]

再次处理类型 <class 'list'>

An

工具类

from sqlalchemy.ext.declarative import DeclarativeMeta
import json
class AlchemyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj.__class__, DeclarativeMeta):
            # an SQLAlchemy class
            fields = {}
            for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
                data = obj.__getattribute__(field)
                try:
                    json.dumps(data) # this will fail on non-encodable values, like other classes
                    fields[field] = data
                except TypeError:
                    fields[field] = None
            # a json-encodable dict
            return fields
        return json.JSONEncoder.default(self, obj)

使用

from apps.models.test.index import User # model(自行替换)
from utils.AlchemyEncoder import AlchemyEncoder # (路径自行替换)
import json
class Reptile():
    def test():
        users = User.query.all() # 获取表全部数据(自行替换)
        arr = json.dumps(users, cls=AlchemyEncoder)
        
        print(users)
        print(type(users))
        print(users[1])
        print(type(users[1]))

        print(arr)
        print(type(arr))

        a = json.loads(arr)
        print(a)
        print(type(a))
        print(a[1]['name'])

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

An_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值