Aestate
tag.py
Go to the documentation of this file.
1 """
2 这个文件用来为pojo对象做标记,当对象为空或为以下任意类型时
3 insert操做将会忽略该字段,find操作不会处理为空的字段
4 """
5 import datetime
6 
7 from aestate.ajson import aj
8 
9 
10 class baseTag(object):
11  def __init__(self,
12  name=None,
13  length=None,
14  d_point=None,
15  t_type='varchar',
16  is_null=False,
17  primary_key=False,
18  comment="",
19  auto_field=False,
20  auto_time=False,
21  update_auto_time=False,
22  default=None):
23  """
24  :param name:字段名
25  :param length:长度
26  :param d_point:小数点
27  :param t_type:类型
28  :param is_null:允许为空
29  :param primary_key:键
30  :param comment:注释
31  :param auto_field:自增长键
32  :param auto_time:默认设置当前时间
33  :param update_auto_time:默认设置当前时间并根据当前时间更新
34  :param default:默认值
35  """
36  # 是否为随着时间而更新
37  self.update_auto_time = update_auto_time
38  if update_auto_time:
39  self.default = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
40  # 是否自动设置为当前时间
41  self.auto_time = auto_time
42  if auto_time:
43  self.default = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
44  # 是否为自增
45  self.autoField = auto_field
46  # 注释
47  self.comment = comment
48  # 是否为主键
49  self.primary_key = primary_key
50  # 是否可以为空
51  self.is_null = is_null
52  # 小数点包含的位数
53  self.d_point = d_point
54  # 字段的名称
55  self.name = name
56  # 类型
57  self.t_type = t_type
58  # 最大长度
59  self.length = length
60  # 如果有设置自定义默认值则用自定义,如果有其他的条件触发默认值则设置,反之为空
61  self.default = default if default else self.default if hasattr(self, 'default') else None
62  # 如果使用的是被继承的子类,那么在这里就会有一个名为fields的字段
63  # 将所有自定义字段
64  if self.fields:
65  for key, value in self.fields.items():
66  setattr(self, key, value)
67 
68  del self.fields
69 
70  def get_field(self, name):
71  """
72  获得字段
73  """
74  return getattr(self, name)
75 
76  def set_field(self, name, value):
77  """
78  设置值
79  """
80  setattr(self, name, value)
81 
82  def get_table(self, bf):
83  """
84  获取表数据结构
85  """
86  if bf:
87  return aj.parse(self, bf)
88  return aj.load(aj.parse(self))
89 
90 
92 
93  def __init__(self, cls=None, **kwargs):
94  self.fields = {}
95  if cls:
96  kwargs.update(cls.__dict__)
97  self.fields['cls'] = cls
98  kwargs.update(update_field(**kwargs))
99  self.fields.update(kwargs)
100  super(Template, self).__init__(**kwargs)
101 
102 
104  def __init__(self, **kwargs):
105  super(tinyintField, self).__init__(t_type='tinyint', **kwargs)
106 
107 
109  def __init__(self, **kwargs):
110  super(intField, self).__init__(t_type='int', **kwargs)
111 
112 
114  def __init__(self, **kwargs):
115  super(bigintField, self).__init__(t_type='bigint', **kwargs)
116 
117 
119  def __init__(self, **kwargs):
120  super(floatField, self).__init__(t_type='float', **kwargs)
121 
122 
124  def __init__(self, **kwargs):
125  super(doubleField, self).__init__(t_type='double', **kwargs)
126 
127 
129  def __init__(self, **kwargs):
130  super(datetimeField, self).__init__(t_type='datetime', **kwargs)
131 
132 
134  def __init__(self, **kwargs):
135  super(charField, self).__init__(t_type='char', **kwargs)
136 
137 
139  def __init__(self, **kwargs):
140  super(varcharField, self).__init__(t_type='varchar', **kwargs)
141 
142 
144  def __init__(self, **kwargs):
145  super(textField, self).__init__(t_type='text', **kwargs)
146 
147 
149  def __init__(self, **kwargs):
150  super(tinytextField, self).__init__(t_type='tinytext', **kwargs)
151 
152 
154  def __init__(self, **kwargs):
155  super(longtextField, self).__init__(t_type='longtext', **kwargs)
156 
157 
159  """布尔值的字段,只有0和1"""
160 
161 
162 def update_field(**kwargs):
163  """
164  更新字典配置
165  """
166 
167  def no_rep(key, value, **kwargs):
168  """
169  不存在则替换
170  """
171  if key not in kwargs.keys():
172  kwargs[key] = value
173  return kwargs
174 
175  def has_attr(key, **kwargs):
176  if key in kwargs.keys():
177  return kwargs[key]
178  return None
179 
180  # kwargs.update(no_rep('table_name', has_attr('__table_name__', **kwargs), **kwargs))
181  kwargs.update(no_rep('name', has_attr('name', **kwargs), **kwargs))
182  kwargs.update(no_rep('length', has_attr('length', **kwargs), **kwargs))
183  kwargs.update(no_rep('d_point', has_attr('d_point', **kwargs), **kwargs))
184  kwargs.update(no_rep('t_type', has_attr('t_type', **kwargs), **kwargs))
185  kwargs.update(no_rep('is_null', has_attr('is_null', **kwargs), **kwargs))
186  kwargs.update(no_rep('primary_key', has_attr('primary_key', **kwargs), **kwargs))
187  kwargs.update(no_rep('comment', has_attr('comment', **kwargs), **kwargs))
188  kwargs.update(no_rep('auto_field', has_attr('auto_field', **kwargs), **kwargs))
189  kwargs.update(no_rep('auto_time', has_attr('auto_time', **kwargs), **kwargs))
190  kwargs.update(no_rep('update_auto_time', has_attr('update_auto_time', **kwargs), **kwargs))
191  return kwargs
aestate.dbs._mysql.tag.baseTag.update_auto_time
update_auto_time
Definition: tag.py:26
aestate.dbs._mysql.tag.baseTag.t_type
t_type
Definition: tag.py:46
aestate.dbs._mysql.tag.baseTag.autoField
autoField
Definition: tag.py:34
aestate.dbs._mysql.tag.baseTag.comment
comment
Definition: tag.py:36
aestate.dbs._mysql.tag.datetimeField.__init__
def __init__(self, **kwargs)
Definition: tag.py:129
aestate.dbs._mysql.tag.baseTag.length
length
Definition: tag.py:48
aestate.dbs._mysql.tag.longtextField.__init__
def __init__(self, **kwargs)
Definition: tag.py:154
aestate.dbs._mysql.tag.longtextField
Definition: tag.py:153
aestate.dbs._mysql.tag.update_field
def update_field(**kwargs)
Definition: tag.py:162
aestate.dbs._mysql.tag.tinyintField.__init__
def __init__(self, **kwargs)
Definition: tag.py:104
aestate.dbs._mysql.tag.baseTag.name
name
Definition: tag.py:44
aestate.dbs._mysql.tag.baseTag.is_null
is_null
Definition: tag.py:40
aestate.dbs._mysql.tag.baseTag.__init__
def __init__(self, name=None, length=None, d_point=None, t_type='varchar', is_null=False, primary_key=False, comment="", auto_field=False, auto_time=False, update_auto_time=False, default=None)
Definition: tag.py:11
aestate.dbs._mysql.tag.floatField.__init__
def __init__(self, **kwargs)
Definition: tag.py:119
aestate.dbs._mysql.tag.Template
Definition: tag.py:91
aestate.dbs._mysql.tag.baseTag.auto_time
auto_time
Definition: tag.py:30
aestate.dbs._mysql.tag.baseTag
Definition: tag.py:10
aestate.dbs._mysql.tag.doubleField
Definition: tag.py:123
aestate.dbs._mysql.tag.baseTag.d_point
d_point
Definition: tag.py:42
aestate.dbs._mysql.tag.tinytextField
Definition: tag.py:148
aestate.dbs._mysql.tag.intField.__init__
def __init__(self, **kwargs)
Definition: tag.py:109
aestate.dbs._mysql.tag.tinyintField
Definition: tag.py:103
aestate.dbs._mysql.tag.baseTag.get_table
def get_table(self, bf)
Definition: tag.py:82
aestate.dbs._mysql.tag.textField.__init__
def __init__(self, **kwargs)
Definition: tag.py:144
aestate.dbs._mysql.tag.Template.__init__
def __init__(self, cls=None, **kwargs)
Definition: tag.py:93
aestate.dbs._mysql.tag.baseTag.get_field
def get_field(self, name)
Definition: tag.py:70
aestate.dbs._mysql.tag.bigintField
Definition: tag.py:113
aestate.dbs._mysql.tag.baseTag.primary_key
primary_key
Definition: tag.py:38
aestate.dbs._mysql.tag.charField.__init__
def __init__(self, **kwargs)
Definition: tag.py:134
aestate.dbs._mysql.tag.boolField
Definition: tag.py:158
aestate.dbs._mysql.tag.Template.fields
fields
Definition: tag.py:94
aestate.dbs._mysql.tag.textField
Definition: tag.py:143
aestate.dbs._mysql.tag.baseTag.set_field
def set_field(self, name, value)
Definition: tag.py:76
aestate.dbs._mysql.tag.doubleField.__init__
def __init__(self, **kwargs)
Definition: tag.py:124
aestate.dbs._mysql.tag.tinytextField.__init__
def __init__(self, **kwargs)
Definition: tag.py:149
aestate.dbs._mysql.tag.baseTag.default
default
Definition: tag.py:28
aestate.dbs._mysql.tag.varcharField
Definition: tag.py:138
aestate.dbs._mysql.tag.datetimeField
Definition: tag.py:128
aestate.dbs._mysql.tag.intField
Definition: tag.py:108
aestate.ajson
Definition: __init__.py:1
aestate.dbs._mysql.tag.charField
Definition: tag.py:133
aestate.dbs._mysql.tag.floatField
Definition: tag.py:118
aestate.dbs._mysql.tag.bigintField.__init__
def __init__(self, **kwargs)
Definition: tag.py:114
aestate.dbs._mysql.tag.varcharField.__init__
def __init__(self, **kwargs)
Definition: tag.py:139