码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2020-04-04 17:25:13      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:detail   增加   ofo   query   typeerror   primary   mat   data   tps   

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

在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

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

标签:detail   增加   ofo   query   typeerror   primary   mat   data   tps   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!