Python 查询原生sql,model转json

1 首先我们看一下python 序列化对象===========================================================================================================================

class Test:
    def __int__(self):
        self.a=2
        self.b=3

a = Test();
a.a=2;
a.b=3;
a_dist = a.__dict__;
print json.dumps(a_dist);

是不是很简单直接转为dict 就ok;

2 那我们在django 数据库查询的时候继承了models===================================================================================================================

userinfo= User.objects.get(id=1);
print userinfo.__dict__;

输出结果为

{'address': u'nanjin', '_state': <django.db.models.base.ModelState object at 0x0000000003D59E48>, 'id': 1L, 'name': u'seat'}

3 在往json 转换的时候_state 的时候, model 是无法系列化的,解决方案======================================================================================================

print  model_to_dict(userinfo)
print json.dumps(model_to_dict(userinfo))

4结果就去掉了_STATE===================================================================================================================================

{'address': u'nanjin', 'id': 1L, 'name': u'seat'}
{"address": "nanjin", "id": 1, "name": "seat"}

 

5 如果是对象列表呢?===================================================================================================================================

  users = DemoTest.models.User.objects.all()
    type(users)
    usersjson = json.dumps(list(users), default=lambda O: model_to_dict(O))

很简单吧,最近也是刚开始接触python

6 Python 解决原生sql的问题,并且处理orm,在sql 查询业务需要中,多张业务表 并没有显示的指明表之间的直接的关联关系,也就是说没有外键关联之类的,如果自己去构建vo ,这会浪费很多的时间,python 提供了api 去帮助我们实现这样的事情

==============================================================================================================================================

     list_=[]
    conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', db='seantest')
    cur = conn.cursor()
    cur.execute("select a.*,b.user_teacher from USER a , userdetail b WHERE  a.id = b.userid")
    desc = cur.description
    print desc
    if desc == None:
        return []
    columns = [col[0] for col in desc]
    print columns
    for row in cur.fetchall():
        list_.append(dict(zip(columns,row)))
    return list_

 

这里主要用了zip 函数来压缩2个元组,主要用了cur.descriptiop 这个api ,结果为

=================================================================================================================================================

[{'user_teacher': 'zhang', 'address': 'nanjin', 'id': 1L, 'name': 'zhoutao'}, {'user_teacher': 'zhou', 'address': 'hhaha', 'id': 3L, 'name': 'rerere'}]

 

转载于:https://www.cnblogs.com/seanzhoutao/p/6381108.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值