Aestate
Serialize.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*- #
2 __author__ = 'CACode'
3 
4 from aestate.ajson import aj
5 
6 """
7 此文件内包含有序列化器所有需要用到的参数
8 aj可使用原simplejson部分功能,内嵌simplejson,升级功能包含
9 - parse(obj,bf,end_load) 解析object类型
10 - load(obj) 生成字典
11 """
12 
13 __all__ = ['aj', 'QuerySet', 'PageHelp']
14 
15 
16 class QuerySet(list):
17  """
18  执行database operation返回的结果集对象
19 
20  此序列化器采用链表形式储存数据,递归搜索子节点
21 
22  顺序从左子树开始依次按照索引排列
23 
24  元类:
25  list
26 
27  Methods:
28  first():
29  返回结果集对象的第一个数据
30 
31  last():
32  返回结果集对象的最后一位参数
33 
34  page(size):
35  按照每一页有size数量的结果分页
36 
37  to_json():
38  将结果集对象转json字符串
39 
40  add_field():
41  添加一个字段使得解析过程中不会被移除
42 
43  remove_field():
44  删除一个字段使得解析过程中不会添加
45 
46  get():
47  返回指定位置的参数
48 
49  Attribute:
50 
51  instance:实例类型模板
52 
53  base_data:基本数据
54 
55  query_item:使用已有的数据生成QuerySet对象
56 
57  """
58 
59  def __init__(self, instance=None, base_data=None, query_items=None):
60  """
61  初始化传入结果集并附加上base_data数据集
62 
63  instance:
64  序列化的实例对象
65 
66  base_data:
67  初始化数据源
68  """
69  list.__init__([])
70  if query_items is None:
71  self.__instance__ = instance
72  # 合并结果集对象
73  self.extend(base_data)
74  else:
75  self.extend(query_items)
76 
77  def size(self):
78  return len(self)
79 
80  def first(self):
81  """
82  取得结果集的第一位参数
83  """
84  return self[0]
85 
86  def last(self):
87  """
88  取得结果集的最后一位参数
89  """
90  return self[len(self) - 1]
91 
92  def page(self, size):
93  """
94  将结果集按照指定数目分割
95  """
96  return PageHelp.list_of_groups(init_list=self, size=size)
97 
98  def to_json(self, bf=False):
99  """
100  将结果集对象转json处理
101  :param bf:是否需要美化sql
102  """
103  result = []
104  for i in self:
105  result.append(aj.load(i.to_json(bf=bf)))
106  return aj.parse(result, bf=bf)
107 
108  def to_dict(self):
109  return aj.load(self.to_json())
110 
111  def add_field(self, key, default_value=None):
112  """
113  添加一个不会被解析忽略的字段
114  """
115 
116  [self[i].add_field(key, default_value) for i in range(len(self))]
117 
118  def remove_field(self, key):
119  """
120  添加一个会被解析忽略的字段
121  """
122  [self[i].remove_field(key) for i in range(len(self))]
123 
124  def get(self, index):
125  """
126  返回指定位置的元素
127  """
128  return self[index]
129 
130 
131 class PageHelp(list):
132  def __init__(self, init_data: list):
133  list.__init__([])
134 
135  self.__dict_data__ = {}
136  self.__json_data__ = ""
137 
138  self.extend(init_data)
139 
140  def to_dict(self):
141  """
142  节省资源
143  """
144  if not self.__dict_data__:
145  self.__dict_data__ = aj.load(self.to_json())
146  return self.__dict_data__
147 
148  def to_json(self, bf=False):
149  """
150  节省资源
151  """
152  if not self.__json_data__:
153  json_str = [i.to_dict() for i in self]
154  self.__json_data__ = aj.parse(json_str, bf)
155  return self.__json_data__
156 
157  @classmethod
158  def list_of_groups(cls, init_list, size):
159  """
160  将数据集按照一定数量分组并返回新数组
161  """
162  list.__init__([])
163  lo_groups = zip(*(iter(init_list),) * size)
164  end_list = [QuerySet(query_items=i) for i in lo_groups]
165  count = len(init_list) % size
166  end_list.append(QuerySet(
167  query_items=init_list[-count:])) if count != 0 else QuerySet(query_items=end_list)
168  return PageHelp(end_list)
169 
170  def get(self, index):
171  return self[index]
aestate.work.Serialize.PageHelp
Definition: Serialize.py:131
aestate.work.Serialize.QuerySet.to_dict
def to_dict(self)
Definition: Serialize.py:108
aestate.work.Serialize.QuerySet.first
def first(self)
Definition: Serialize.py:80
aestate.work.Serialize.PageHelp.__json_data__
__json_data__
Definition: Serialize.py:136
aestate.work.Serialize.QuerySet.to_json
def to_json(self, bf=False)
Definition: Serialize.py:98
aestate.work.Serialize.PageHelp.to_json
def to_json(self, bf=False)
Definition: Serialize.py:148
aestate.work.Serialize.PageHelp.list_of_groups
def list_of_groups(cls, init_list, size)
Definition: Serialize.py:158
aestate.work.Serialize.QuerySet.last
def last(self)
Definition: Serialize.py:86
aestate.work.Serialize.QuerySet.add_field
def add_field(self, key, default_value=None)
Definition: Serialize.py:111
aestate.work.Serialize.PageHelp.__init__
def __init__(self, list init_data)
Definition: Serialize.py:132
aestate.work.Serialize.PageHelp.to_dict
def to_dict(self)
Definition: Serialize.py:140
aestate.work.Serialize.PageHelp.__dict_data__
__dict_data__
Definition: Serialize.py:135
aestate.work.Serialize.QuerySet.page
def page(self, size)
Definition: Serialize.py:92
aestate.work.Serialize.QuerySet.__instance__
__instance__
Definition: Serialize.py:71
aestate.work.Serialize.QuerySet.remove_field
def remove_field(self, key)
Definition: Serialize.py:118
aestate.work.Serialize.QuerySet.size
def size(self)
Definition: Serialize.py:77
aestate.work.Serialize.QuerySet.__init__
def __init__(self, instance=None, base_data=None, query_items=None)
Definition: Serialize.py:59
aestate.work.Serialize.QuerySet
Definition: Serialize.py:16
aestate.work.Serialize.QuerySet.get
def get(self, index)
Definition: Serialize.py:124
aestate.ajson
Definition: __init__.py:1
aestate.work.Serialize.PageHelp.get
def get(self, index)
Definition: Serialize.py:170