Aestate
Adapter.py
Go to the documentation of this file.
1 from aestate.exception import FieldNotExist
2 from aestate.util.Log import ALog
3 
4 
6  """
7  适配器,将sql方言适配到ORM框架中,实现sql自由
8 
9  从配置表中开始配置sql方言,继承SqlLanguage类并实现抽象方法,开启
10 
11  实现当前类,在orm操作中存在自定义字段时,保证所有的操作都能够按照你所希望的那样执行
12  """
13  funcs = {}
14 
15  def __init__(self):
16  if not hasattr(self, 'funcs'):
17  self.funcs = {}
18  self.__sp('like', self._like_opera)
19  self.__sp('in', self._in_opera)
20  self.__sp('lt', self._lt_opera)
21  self.__sp('gt', self._gt_opera)
22  self.__sp('le', self._le_opera)
23  self.__sp('ge', self._ge_opera)
24  self.__sp('eq', self._eq_opera)
25 
26  def add_lan(self, name, func):
27  self.__sp(name, func)
28 
29  def _like_opera(self, instance, key, value):
30  instance.args.append('`' + key + '`')
31  instance.args.append(' LIKE ')
32  instance.args.append('%s')
33  instance.args.append(' AND ')
34  instance.params.append(value)
35 
36  def _in_opera(self, instance, key, value):
37  if isinstance(value, list):
38  instance.args.append('`' + key + '`')
39  instance.args.append(' IN ')
40  value = [str(i) for i in value]
41  vals = ','.join(value)
42  instance.args.append(f'( {vals} )')
43  else:
44  ALog.log_error(
45  msg='value type is not list or QuerySet object',
46  obj=FieldNotExist, raise_exception=True)
47 
48  def _lt_opera(self, instance, key, value):
49  instance.args.append('`' + key + '`')
50  instance.args.append(' < ')
51  instance.args.append('%s')
52  instance.args.append(' AND ')
53  instance.params.append(value)
54 
55  def _gt_opera(self, instance, key, value):
56  instance.args.append('`' + key + '`')
57  instance.args.append(' > ')
58  instance.args.append('%s')
59  instance.args.append(' AND ')
60  instance.params.append(value)
61 
62  def _le_opera(self, instance, key, value):
63  instance.args.append('`' + key + '`')
64  instance.args.append(' <= ')
65  instance.args.append('%s')
66  instance.params.append(value)
67 
68  def _ge_opera(self, instance, key, value):
69  instance.args.append('`' + key + '`')
70  instance.args.append(' >= ')
71  instance.args.append('%s')
72  instance.params.append(value)
73 
74  def _eq_opera(self, instance, key, value):
75  instance.args.append('`' + key + '`')
76  instance.args.append(' = ')
77  instance.args.append('%s')
78  instance.params.append(value)
79 
80  def __sp(self, key, val):
81  if key not in self.funcs.keys():
82  self.funcs[key] = val
aestate.work.Adapter.LanguageAdapter._ge_opera
def _ge_opera(self, instance, key, value)
Definition: Adapter.py:68
aestate.work.Adapter.LanguageAdapter.funcs
dictionary funcs
Definition: Adapter.py:13
aestate.work.Adapter.LanguageAdapter._in_opera
def _in_opera(self, instance, key, value)
Definition: Adapter.py:36
aestate.work.Adapter.LanguageAdapter._eq_opera
def _eq_opera(self, instance, key, value)
Definition: Adapter.py:74
aestate.util.Log
Definition: Log.py:1
aestate.exception
Definition: __init__.py:1
aestate.work.Adapter.LanguageAdapter._le_opera
def _le_opera(self, instance, key, value)
Definition: Adapter.py:62
aestate.work.Adapter.LanguageAdapter
Definition: Adapter.py:5
aestate.work.Adapter.LanguageAdapter._like_opera
def _like_opera(self, instance, key, value)
Definition: Adapter.py:29
aestate.work.Adapter.LanguageAdapter._gt_opera
def _gt_opera(self, instance, key, value)
Definition: Adapter.py:55
aestate.work.Adapter.LanguageAdapter._lt_opera
def _lt_opera(self, instance, key, value)
Definition: Adapter.py:48
aestate.work.Adapter.LanguageAdapter.__sp
def __sp(self, key, val)
Definition: Adapter.py:80
aestate.work.Adapter.LanguageAdapter.add_lan
def add_lan(self, name, func)
Definition: Adapter.py:26
aestate.work.Adapter.LanguageAdapter.__init__
def __init__(self)
Definition: Adapter.py:15