Aestate
ProxyOpera.py
Go to the documentation of this file.
1 from concurrent.futures import ThreadPoolExecutor
2 
3 pool = ThreadPoolExecutor()
4 
5 
6 class DbOperation(object):
7  """
8  迁移重要操作到此类
9  """
10 
11  def __init__(self, *args, **kwargs):
12  self.args = args
13  self.kwargs = kwargs
14 
15  def start(self, *args, **kwargs):
16  """
17  开始任务
18  Attributes:
19  func:调用指定的方法
20  """
21  # 执行的函数体
22  func = kwargs['func']
23  # 线程独立
24  _lock = kwargs['t_local']
25  name = kwargs['__task_uuid__']
26  # # 设置任务
27  # _kw = aj.load(aj.parse(_lock))
28  _kw = _lock.__dict__
29  kwargs.update(_kw)
30  _t = pool.submit(lambda x, y: func(*x, **y), args, kwargs)
31  # _t = threading.Thread(target=func, args=args, kwargs=kwargs, name=name)
32  # if not _lock.close_log:
33  # ALog.log(obj=_t, msg='RUNNING', task_name=name, LogObject=log_obj)
34  result = _t.result()
35  # 返回结果
36  return result[name]
37 
38  def __find_all__(self, *args, **kwargs):
39  """作者:CACode 最后编辑于2021/4/12
40  任务方法
41  """
42  return self.__find_by_field__(*args, **kwargs)
43 
44  def __find_by_field__(self, *args, **kwargs):
45  """作者:CACode 最后编辑于2021/4/12
46 
47  任务方法
48  """
49  fields = kwargs['config_obj'].parse_key(*args, is_field=True, left=kwargs['sqlFields'].left_subscript,
50  right=kwargs['sqlFields'].right_subscript)
51  sql_str = kwargs['sqlFields'].find_str + fields + kwargs['sqlFields'].from_str + kwargs['__table_name__']
52  kwargs['sql'] = sql_str
53  return self.__find_many__(**kwargs)
54 
55  def __find_many__(self, *args, **kwargs):
56  """作者:CACode 最后编辑于2021/4/12
57 
58  任务方法
59  """
60  # kwargs['conf_obj'] = config_obj
61  # kwargs = kwargs['ParseUtil'].find_print_sql(**kwargs)
62  return self.__find_sql__(**kwargs)
63 
64  def __find_sql__(self, *args, **kwargs):
65  """作者:CACode 最后编辑于2021/4/12
66 
67  任务方法
68  """
69  kwargs = kwargs['ParseUtil'].find_print_sql(**kwargs)
70  _rs = kwargs['db_util'].select(**kwargs)
71 
72  result = []
73 
74  for i in _rs:
75  result.append(kwargs['ParseUtil'].parse_obj(i, kwargs['instance']))
76 
77  return {
78  kwargs['__task_uuid__']: result
79  }
80 
81  def __insert__(self, *args, **kwargs):
82  """作者:CACode 最后编辑于2021/4/12
83  :param pojo: pojo对象
84  任务方法
85  """
86  kwargs = kwargs['ParseUtil'].find_print_sql(**kwargs)
87 
88  kwargs = kwargs['ParseUtil'].find_last_id(**kwargs)
89  kwargs['ParseUtil'].fieldExist(kwargs, 'pojo', raise_exception=True)
90 
91  if 'many' in kwargs and kwargs['many']:
92  # 多行插入 这个先取出sql语句,params无作用
93  for item in kwargs['pojo']:
94  filed_list = kwargs['config_obj'].parse_insert_pojo(item,
95  __table_name__=kwargs['__table_name__'],
96  insert_str=kwargs['sqlFields'].insert_str,
97  values_str=kwargs['sqlFields'].values_str)
98 
99  if 'params' not in kwargs.keys() or not isinstance(kwargs['params'], list):
100  kwargs['params'] = []
101  kwargs['sql'] = filed_list['sql']
102  kwargs['params'].append(filed_list['params'])
103 
104  else:
105  filed_list = kwargs['config_obj'].parse_insert_pojo(kwargs['pojo'], __table_name__=kwargs['__table_name__'],
106  insert_str=kwargs['sqlFields'].insert_str,
107  values_str=kwargs['sqlFields'].values_str)
108 
109  kwargs.update(filed_list)
110  return {
111  kwargs['__task_uuid__']: kwargs['db_util'].insert(**kwargs)
112  }
113 
114  def __update__(self, *args, **kwargs):
115  kwargs = kwargs['ParseUtil'].find_print_sql(**kwargs)
116 
117  kwargs = kwargs['ParseUtil'].find_last_id(**kwargs)
118  kwargs['sql'], kwargs['params'] = kwargs['config_obj'].parse_update(kwargs['pojo'], kwargs['key'])
119 
120  return {
121  kwargs['__task_uuid__']: kwargs['db_util'].update(**kwargs)
122  }
123 
124  def __remove__(self, *args, **kwargs):
125  kwargs = kwargs['ParseUtil'].find_print_sql(**kwargs)
126 
127  kwargs = kwargs['ParseUtil'].find_last_id(**kwargs)
128  kwargs['sql'], kwargs['params'] = kwargs['config_obj'].parse_remove(kwargs['pojo'], kwargs['key'])
129 
130  return {
131  kwargs['__task_uuid__']: kwargs['db_util'].update(**kwargs)
132  }
aestate.work.sql.ProxyOpera.DbOperation.__remove__
def __remove__(self, *args, **kwargs)
Definition: ProxyOpera.py:124
aestate.work.sql.ProxyOpera.DbOperation.__find_by_field__
def __find_by_field__(self, *args, **kwargs)
Definition: ProxyOpera.py:44
aestate.work.sql.ProxyOpera.DbOperation.__find_all__
def __find_all__(self, *args, **kwargs)
Definition: ProxyOpera.py:38
aestate.work.sql.ProxyOpera.DbOperation.__find_sql__
def __find_sql__(self, *args, **kwargs)
Definition: ProxyOpera.py:64
aestate.work.sql.ProxyOpera.DbOperation.args
args
Definition: ProxyOpera.py:12
aestate.work.sql.ProxyOpera.DbOperation
Definition: ProxyOpera.py:6
aestate.work.sql.ProxyOpera.DbOperation.start
def start(self, *args, **kwargs)
Definition: ProxyOpera.py:15
aestate.work.sql.ProxyOpera.DbOperation.__insert__
def __insert__(self, *args, **kwargs)
Definition: ProxyOpera.py:81
aestate.work.sql.ProxyOpera.DbOperation.kwargs
kwargs
Definition: ProxyOpera.py:13
aestate.work.sql.ProxyOpera.DbOperation.__init__
def __init__(self, *args, **kwargs)
Definition: ProxyOpera.py:11
aestate.work.sql.ProxyOpera.DbOperation.__update__
def __update__(self, *args, **kwargs)
Definition: ProxyOpera.py:114
aestate.work.sql.ProxyOpera.DbOperation.__find_many__
def __find_many__(self, *args, **kwargs)
Definition: ProxyOpera.py:55