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'}]