3 from typing
import List, Tuple
15 def parse_main(self, *args, to_str=False, symbol='%s', left='[', right=']', **kwargs):
18 将属性格式设置为:['`a`,','`b`,','`c`']
19 :param to_str:是否转成str格式
21 :param is_field:是否为表字段格式
28 is_field = kwargs[
'is_field']
if 'is_field' in kwargs.keys()
else False
32 value = others.conversion_types(value)
35 fields.append(f
'{left}{symbol}{right},' % (str(value)))
37 fields.append(f
'{symbol},' % (str(value)))
39 fields.append(value
if not ParseUtil.is_default(value)
else None)
41 fields[len(fields) - 1] = fields[len(fields) - 1].replace(
',',
'')
54 INSERT INTO `demo` (这里的就是键) VALUES ('','','','');
58 if 'is_field' not in kwargs.keys():
59 kwargs[
'is_field'] =
True
60 fields = self.
parse_main(*args, to_str=
True, **kwargs)
66 INSERT INTO `demo` (`index`, `title`, `selects`, `success`) VALUES (这里的就是值);
73 def parse_insert(self, keys, values, __table_name__, insert_str, values_str, symbol='%s',
74 sql_format='%s %s (%s)%s(%s)
'):
83 symbol:格式化方式,以`%s`作为匿名符号
88 hides_value = [f
'{symbol},' for i
in range(len(values))]
90 end = hides_value[len(hides_value) - 1]
91 hides_value[len(hides_value) - 1] = end[0: len(end) - 1]
93 value =
''.join(hides_value)
96 str(__table_name__), fields, values_str, value
101 [args.append(i)
for i
in values]
109 INSERT INTO `__table_name__`(`title`,'selects') VALUE ('','')
112 :param __table_name__:表名
113 :param insert_str:insert的sql方言
114 :param values_str:values的sql方言
118 ParseUtil.fieldExist(pojo,
'fields', raise_exception=
True)
124 keys_c, cp_v = ParseUtil.parse_pojo(pojo)
128 return self.
parse_insert(keys_copy, cp_value, __table_name__, insert_str=insert_str,
129 values_str=values_str)
138 values = [getattr(pojo, v)
for v
in keys]
139 for i, j
in enumerate(values):
140 if j
is not None and not ParseUtil.is_default(j):
141 keys_copy.append(keys[i])
144 return keys_copy, cp_value
153 :param instance:参与解析的对象
157 part_obj = copy.copy(instance)
158 for key, value
in data.items():
159 setattr(part_obj, key, value)
164 """作者:CACode 最后编辑于2021/4/12
184 conf_obj = kwargs[
'config_obj']
185 if 'last_id' not in kwargs.keys():
186 c_dict = conf_obj.get_dict()
187 if 'last_id' in c_dict.keys():
188 kwargs[
'last_id'] = c_dict[
'last_id']
190 kwargs[
'last_id'] =
False
206 conf_obj = kwargs[
'config_obj']
207 if 'print_sql' not in kwargs.keys():
208 c_dict = conf_obj.get_dict()
209 if 'print_sql' in c_dict.keys():
210 kwargs[
'print_sql'] = c_dict[
'print_sql']
212 kwargs[
'print_sql'] =
False
216 def case_name(text, rep_text='_', lower=True, upper=False):
218 将驼峰文本改为使用指定符号分割的字符串表达形式并全部小写
220 :param rep_text:在大写文本后面追加的字符串
221 :param lower:是否需要全部小写
222 :param upper:是否需要全部大写
225 for index, char
in enumerate(text):
226 if char.isupper()
and index != 0:
231 return "".join(lst).lower()
233 return "".join(lst).upper()
243 t_v = __val.__class__.__base__
244 if t_v
in [tag.Template, tag.baseTag]:
245 return __val.default
is None
254 为了方便提高拓展性可解耦,框架内部务必使用此
256 方法或者set_field_compulsory()为操作管理类提供对象
259 if not hasattr(obj, key):
260 setattr(obj, key, value)
265 如果键存在于data中,为obj插入该值,反之插入val
267 if key
in data.keys():
268 setattr(obj, key, data[key])
270 setattr(obj, key, val)
273 def fieldExist(obj: object, field: str, el=
None, raise_exception=
False) -> object:
275 在对象中获取一个字段的值,如果这个字段不存在,则将值设置为`el`
277 if isinstance(obj, dict):
278 if field
in obj.keys():
283 msg=f
'the key of `{field}` cannot be found in the `{obj.__class__.__name__}`',
284 obj=FieldNotExist, raise_exception=
True)
288 if hasattr(obj, field):
289 return getattr(obj, field)
292 raise ALog.log_error(
293 msg=f
'the key of `{field}` cannot be found in the `{obj.__class__.__name__}`',
295 raise_exception=
True)
304 for pojo
in pojo_many:
305 keys_c, cp_v = ParseUtil.parse_pojo(pojo)
306 cp_value.append(tuple(cp_v))
312 for key, value
in kwargs.items():
313 ParseUtil.set_field_compulsory(obj=obj, key=key, data=kwargs, val=value)
319 fields = instance.getFields()
330 _instance_lock = threading.RLock()
456 return '>> << == <= >= != - + / * %'.split(
' ')
464 keys_str +=
'{}=%s{}'.format(i, self.
ander_str)
465 keys_str = keys_str[0:len(keys_str) - len(self.
ander_str)]
469 instance = Singleton.createObject(cls)
482 class CreateModel(OperaBase):
488 __table_name__ = self.
instance.__table_name__