Aestate
Public Member Functions | Public Attributes | List of all members
aestate.work.repository.Repository Class Reference
Inheritance diagram for aestate.work.repository.Repository:
Inheritance graph
Collaboration diagram for aestate.work.repository.Repository:
Collaboration graph

Public Member Functions

def __init__ (self, config_obj=None, instance=None, log_conf=None, close_log=False, serializer=QuerySet, **kwargs)
 
def conversion (self)
 
def first (self)
 
def last (self)
 
QuerySet find_all (self, **kwargs)
 
QuerySet find_field (self, *args, **kwargs)
 
def find_one (self, sql, **kwargs)
 
QuerySet find_many (self, sql, **kwargs)
 
QuerySet find_sql (self, sql, **kwargs)
 
def update (self, key=None)
 
def remove (self, key=None)
 
def save (self, *args, **kwargs)
 
def create (self, pojo, **kwargs)
 
def copy (self, **kwargs)
 
def execute_sql (self, sql, params=None, mode=EX_MODEL.SELECT, **kwargs)
 
def foreign_key (self, cls, key_name, field_name=None, data=None, operation=None)
 

Public Attributes

 ParseUtil
 
 db_util
 
 result
 
 datas
 

Detailed Description

- POJO类
    - 继承该类表名此类为数据库的pojo类
    - 需要配合:@Table(name, msg, **kwargs)使用

Definition at line 16 of file repository.py.

Constructor & Destructor Documentation

◆ __init__()

def aestate.work.repository.Repository.__init__ (   self,
  config_obj = None,
  instance = None,
  log_conf = None,
  close_log = False,
  serializer = QuerySet,
**  kwargs 
)
通过继承此类将数据表实体化

    实体化之后你可以使用像类似find_one()等操做

    可以调用conversion()方法将其转化为ORM框架常用的样式

    无需担心类型问题,无需担心datetime无法转换
使用方法:
    #加入Table注解,并标注表名与描述,因考虑使用者后期优化问题,请务必填写MSG参数

    @Table(name="demo_table", msg="demo message")

    #继承Repository并得到相对应的半自动ORM操做
    class TestClass(Repository):
# 初始化并super配置
def __init__(self,**kwargs):
    super(DemoTable, self).__init__(config_obj=ConF(), log_conf={
        'path': "/log/",
        'save_flag': True
    }, **kwargs)

初始化配置:

    aestate.util.Config.config的配置类,详见:aestate.work.Config.MysqlConfig

Attributes:
    以下的字段均可覆盖重写

    config_obj:数据源配置类

    log_conf:日志配置工具

    log_obj:日志对象

    close_log:是否关闭日志

    serializer:序列化使用的类,默认使用aestate.work.Serialize.QuerySet

    instance:实例

    __table_name__:表名称

    operation:操作类的实现

    fields:操作的字段

    sqlFields:sql方言

:param config_obj:配置类
:param log_conf:日志配置类
:param close_log:是否关闭日志显示功能
:param serializer:自定义序列化器,默认使用aestate.work.Serialize.QuerySet

Definition at line 23 of file repository.py.

Member Function Documentation

◆ conversion()

def aestate.work.repository.Repository.conversion (   self)
将此Repository转换为ORM实体

Return:
    ORM转换之后的实体对象

Definition at line 133 of file repository.py.

Here is the caller graph for this function:

◆ copy()

def aestate.work.repository.Repository.copy (   self,
**  kwargs 
)
复制对象进行操做

不建议多次创建对象,建议使用 pojo.copy()来生成对象

Definition at line 366 of file repository.py.

◆ create()

def aestate.work.repository.Repository.create (   self,
  pojo,
**  kwargs 
)
插入属性:
    返回受影响行数
:param kwargs:包含所有参数:
    pojo:参照对象
    last_id:是否需要返回最后一行数据,默认False
:return:rowcount,last_id if last_id=True

Definition at line 347 of file repository.py.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ execute_sql()

def aestate.work.repository.Repository.execute_sql (   self,
  sql,
  params = None,
  mode = EX_MODEL.SELECT,
**  kwargs 
)
:param sql:执行的sql
:param params:防止sql注入的参数
:param mode:查询模式,默认使用SELECT,使用aestate.work.Modes.EX_MODEL枚举修改执行的sql类型
:param kwargs:其他需要的参数

Definition at line 376 of file repository.py.

◆ find_all()

QuerySet aestate.work.repository.Repository.find_all (   self,
**  kwargs 
)
从当前数据表格中查找所有数据

Returns:
    将所有结果封装成POJO对象集合并返回数据

Definition at line 154 of file repository.py.

◆ find_field()

QuerySet aestate.work.repository.Repository.find_field (   self,
args,
**  kwargs 
)
只查询指定名称的字段,如:

    SELECT user_name FROM `user`

    即可参与仅解析user_name为主的POJO对象

:param args:需要参与解析的字段名

:return:
    将所有结果封装成POJO对象集合并返回数据

Definition at line 165 of file repository.py.

Here is the call graph for this function:

◆ find_many()

QuerySet aestate.work.repository.Repository.find_many (   self,
  sql,
**  kwargs 
)
查询出多行数据

    第一个必须放置sql语句

:param kwargs:包含所有参数:

    pojo:参照对象

    sql:处理过并加上%s的sql语句

    params:需要填充的字段

    print_sql:是否打印sql语句

:return 将所有数据封装成POJO对象并返回

Definition at line 232 of file repository.py.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_one()

def aestate.work.repository.Repository.find_one (   self,
  sql,
**  kwargs 
)
查找第一条数据

    可以是一条

    也可以是很多条中的第一条

code:

    result = self.find_many(**kwargs)
    if len(result) == 0:
return None
    else:
return result[0]

:param kwargs:包含所有参数:

    pojo:参照对象

    sql:处理过并加上%s的sql语句

    params:需要填充的字段

    print_sql:是否打印sql语句

:return 返回使用find_many()的结果种第一条

Definition at line 195 of file repository.py.

Here is the call graph for this function:

◆ find_sql()

QuerySet aestate.work.repository.Repository.find_sql (   self,
  sql,
**  kwargs 
)
返回多个数据并用list包装:

    - 可自动化操作

    - 请尽量使用find_many(sql)操作

:param kwargs:包含所有参数:
    sql:处理过并加上%s的sql语句
    params:需要填充的字段
    print_sql:是否打印sql语句

Definition at line 263 of file repository.py.

Here is the call graph for this function:

◆ first()

def aestate.work.repository.Repository.first (   self)
获取数据库中的第一个

Definition at line 142 of file repository.py.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ foreign_key()

def aestate.work.repository.Repository.foreign_key (   self,
  cls,
  key_name,
  field_name = None,
  data = None,
  operation = None 
)
根据外键来查

Examples:
    第一种:

    >>> from apps.fontend.models import  Label, SmLabel
    >>> smlabel = SmLabel()
    >>> label = Label()
    >>> label.find_all()
    >>> label.foreign_key(smlabel.copy, 'label_id')
    >>> datas = label.datas

    第二种:

    >>> page = int(requests.GET['page']) \
    ...         if 'page' in requests.GET.keys() \
    ...         else 1
    ...
    >>> sm_label_list = sm_label.orm.filter(id=pk)
    >>> sm_label.foreign_key(
    ...    cls=need.copy,
    ...    key_name='label_id',
    ...    field_name="need_list",
    ...    datas=sm_label_list,
    ...    operation=lambda dt, i: need.orm
    ...        .find()
    ...        .where(label_id=dt[i].id)
    ...        .limit((page - 1) * PAGE_SIZE, PAGE_SIZE)
    ...        .end()
    ...)
    >>> need_list = sm_label.datas
    >>> return Result.success(data=need_list.to_dict())


:param cls:目标外键的类,注意不是对象,是类
:param key_name:外键的id
:param field_name:保存进去的字段名字,默认以表名命名
:param data:使用已有的数据作为外键
:param operation:自定义操作

Definition at line 390 of file repository.py.

◆ last()

def aestate.work.repository.Repository.last (   self)
获取最后一个参数

Definition at line 148 of file repository.py.

Here is the call graph for this function:

◆ remove()

def aestate.work.repository.Repository.remove (   self,
  key = None 
)
执行更新操作:
    返回受影响行数

:param key:主键,where的参考数据
:return:

Definition at line 315 of file repository.py.

Here is the call graph for this function:

◆ save()

def aestate.work.repository.Repository.save (   self,
args,
**  kwargs 
)
将当前储存的值存入数据库

Definition at line 340 of file repository.py.

Here is the call graph for this function:

◆ update()

def aestate.work.repository.Repository.update (   self,
  key = None 
)
执行更新操作:
    返回受影响行数

:param key:主键,where的参考数据
:return:

Definition at line 290 of file repository.py.

Here is the call graph for this function:

Member Data Documentation

◆ datas

aestate.work.repository.Repository.datas

Definition at line 437 of file repository.py.

◆ db_util

aestate.work.repository.Repository.db_util

Definition at line 123 of file repository.py.

◆ ParseUtil

aestate.work.repository.Repository.ParseUtil

Definition at line 83 of file repository.py.

◆ result

aestate.work.repository.Repository.result

Definition at line 162 of file repository.py.


The documentation for this class was generated from the following file: