Aestate
aestate
work
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
Generated by
1.8.17