sqlalchemy 查询结果转json个人解决方案

参考了网上很多资料,自己搞了一个适合的

在model 内增加一个函数:

class User(db.Model):
    __tablename__ = ‘user‘

    userid = db.Column(INTEGER(11), primary_key=True, comment=‘用户ID‘)
    phone_title = db.Column(CHAR(10), comment=‘电话抬头‘)
    phone = db.Column(INTEGER(50), comment=‘用户电话‘)
    account = db.Column(db.String(255), primary_key=True,
                        comment=‘用户账户,备注:用户可以使用其他方式登录,但是在系统必须拥有自己的账户‘)
    email = db.Column(db.String(255), comment=‘用户邮箱‘)
    name = db.Column(CHAR(60), comment=‘用户名称‘)
    password = db.Column(db.String(255))
    token = db.Column(VARCHAR(255), comment=‘用户登录验证‘)
    pre = db.Column(db.String(255), comment=‘用户个人介绍‘)
    c_time = db.Column(DateTime, comment=‘用户创建时间‘)
    photo = db.Column(db.String(255), comment=‘用户头像保存路径‘)
    login_time = db.Column(DateTime, comment=‘用户最后登录时间‘)
    status = db.Column(INTEGER(
        1), comment=‘账户状态:\\r\\n0、正常\\r\\n1、冻结\\r\\n2、过期\\r\\n3、未激活(未分配团队)\\r\\n‘)
    type = db.Column(db.String(255), comment=‘用户类型:0、app用户 1、后台用户 2、第三方用户‘)
    accountType = db.Column(INTEGER(11), comment=‘用户类型2:0、超级管理员 1、后台用户 2、普通用户‘)

    def to_json(self): # ---------------------
        dict = self.__dict__
        if "_sa_instance_state" in dict:
            del dict["_sa_instance_state"]
        return dict

接口调用:

from app.model import User
from app import db, js_ret
from flask import Blueprint, request, make_response, Response, render_template, url_for, current_app as lg
session = db.session

users = Blueprint(‘users‘, __name__, url_prefix=‘/users‘)

@users.route(‘/‘, methods=[‘POST‘, ‘get‘])
def us():
    """
    查询用户列表
    type:查询用户类型
    page_number:每页条数
    page_index : 页码
    token:操作人token
    c_time:操作时间

    """
    page_number = request.form.get(‘page‘)
    page_index = request.form.get(‘page_index‘)

    user_list = User.query.paginate(1,2,False)
    de = []
    for i in user_list.items:
        de.append(i.to_json())

    return js_ret(0,‘‘,de)

然后使用jsonify 方法转换一下格式:

from flask import jsonify

def js_ret(code = None,msg = None,data = None):
    """
    return json 返回参数处理
    code :状态码
    data:返回结果
    """
    rt_data = {
        "code":code,
        "msg":msg,
        "data":data

    }
    jss = jsonify(rt_data)
    return make_response(jss,200)

还有就是日期格式的问题,jsonify 转换的日期格式默认是 http格式,我是直接改了一下源码使用,不推荐使用这种方式,

如果不想使用jsonify的话,直接定义一个函数,对json.dumps方法传参就好,两种方式并没有太大的区别:

区别:https://blog.csdn.net/kun1280437633/article/details/80377734

def json_serial(obj):
    # 处理日期格式问题
    """JSON serializer for objects not serializable by default json code"""

    if isinstance(obj, (datetime, date)):
        if isinstance(obj,datetime):
            return obj.strftime("%Y-%m-%d %H:%M:%S")
        else:
            return obj.soformat()
    raise TypeError ("Type %s not serializable" % type(obj))
# print (dumps(datetime.now(), default=json_serial))
def js_ret(code = None,msg = None,data = None):
    """
    return json 返回参数处理
    code :状态码
    data:返回结果
    """
    rt_data = {
        "code":code,
        "msg":msg,
        "data":data

    }
    jss = jsonify(rt_data)
    return make_response(jss,200)

其他方案:

https://blog.csdn.net/liu_xing_hui/article/details/8956107

时间戳转换:https://www.cnblogs.com/hanbowen/p/10062111.html

原文地址:https://www.cnblogs.com/yc-c/p/12632702.html

时间: 2024-11-17 08:25:39

sqlalchemy 查询结果转json个人解决方案的相关文章

Atitit.列表页and查询条件的最佳实践(1)------设定搜索条件and提交查询and返回json数据

Atitit.列表页and查询条件的最佳实践(1)------设置查询条件and提交查询and返回json数据 1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4.

Atitit.列表页面and条件查询的实现最佳实践(1)------设置查询条件and提交查询and返回json数据

1. 1.?配置条件字段@Conditional 1 1 2. 2.?配置条件字段显示类型为[email protected](displayType?=?displayType.rang,?rangStart?=?rang.start,?rangEnd?=?rang.end,op=op.range) 1 3. #----show  condition  page  list 1 4. 提交条件查询表单by dwr 1 5. @filter  ::   set filter condition 

查询输入框中输入【%%%】能查询出所有结果的解决方案

在开发中输入[%%%]字符的时候能够查询出所有数据. 解决方案:参数化查询+输入框数据处理. 输入框数据处理: /// <summary> /// 处理查询条件中的特殊字符 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string GetStringFilter(string keyVal

c#读取快递100查询返回的JSON信息

{"message":"ok","nu":"1105016801203","companytype":"ems","ischeck":"1","com":"ems","updatetime":"2014-08-01 10:17:31","status"

ASP.NET DataSet查询结果转换为JSON格式数据

欢迎大家进QQ群来讨论:84479667方法如下: public static string nulldata = "{\"result\":\"true\",\"msg\":\"没有相关数据\"}"; #region 查询结果转为json /// <summary> /// 查询结果转为json /// </summary> /// <param name="dt&

python测试开发django-15.查询结果转json(serializers)

前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse.django查询数据库返回json数据有3种方法 serializers转json model_to_dict转字典 values()转list (最简单,推荐!) JsonResponse json是目前常用的一种数据格式,有时候我们需要返回一个json格式的数据,而 JsonResponse

django-15.查询结果转json(serializers)

前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观返回json数据,需要用到JsonResponse.django查询数据库返回json数据有3种方法 serializers转json model_to_dict转字典 values()转list (最简单,推荐!) JsonResponse json是目前常用的一种数据格式,有时候我们需要返回一个json格式的数据,而 JsonResponse 提

将sqlalchemy 查询结果转化成json格式

models.py class CompanyGoodsModel(Base): id=Column(Integer, primary_key=True) company_id = Column(Integer) ... #我们在model中定义一个to_json方法,来获取模型的数据 def to_json(self): dict = self.__dict__ if "_sa_instance_state" in dict: del dict["_sa_instance_

序列化 SqlAlchemy 的结果为 json 字符串

在设计 RESTful 的网站时,我们总是希望 ORM 框架返回的结果是可以直接给 View 层使用的 JSON 字符串.但是 Sqlalchemy 的返回结果直接使用 json.dumps(res) 会报 TypeError 的错误. 解决方案 其实就像遇到 datetime 无法使用 json.dumps() 序列化的问题一样,我们需要继承一个json.JSONEncoder. from sqlalchemy.ext.declarative import DeclarativeMeta cl