Example #1
0
def get_row_by_id(model_name, pk_id):
    """
    通过id获取信息
    :type pk_id: object
    :type model_name: object
    :return None/object
    """
    row = db_session.query(model_name).get(pk_id)
    return row
Example #2
0
def get_rows_by_ids(model_name, pk_ids):
    """
    通过一组 ids 获取信息列表
    :param model_name:
    :param pk_ids:
    :return: list
    """
    model_pk = inspect(model_name).primary_key[0]
    rows = db_session.query(model_name).filter(model_pk.in_(pk_ids)).all()
    return rows
Example #3
0
def update_rows_by_ids(model_name, pk_ids, data):
    """
    根据一组主键id 批量修改数据
    """
    model_pk = inspect(model_name).primary_key[0]
    try:
        model_obj = db_session.query(model_name).filter(model_pk.in_(pk_ids))
        result = model_obj.update(data, synchronize_session=False)
        db_session.commit()
        return result
    except Exception as e:
        db_session.rollback()
        raise e
Example #4
0
def delete(model_name, pk_id):
    """
    删除信息
    :param model_name: 删除的模型
    :type pk_id: 删除的主键
    """
    model_pk = inspect(model_name).primary_key[0]
    try:
        model_obj = db_session.query(model_name).filter(model_pk == pk_id)
        result = model_obj.delete()
        db_session.commit()
    except Exception as e:
        db_session.rollback()
        raise e
Example #5
0
def get_limit_rows_by_last_id(model_name, last_pk_id, limit_num, *args, **kwargs):
    """
    通过最后一个主键 id 获取最新信息列表
    适用场景:
    1、动态加载
    2、快速定位
    :param model_name:
    :param last_pk_id:
    :param limit_num:
    :param args:
    :param kwargs:
    :return: list
    """
    model_pk = inspect(model_name).primary_key[0]
    rows = db_session.query(model_name).filter(model_pk > last_pk_id, *args).filter_by(**kwargs).limit(limit_num).all()
    return rows
Example #6
0
def edit(model_name, pk_id, data):
    """
    编辑信息
    :param model_name: 编辑的模型
    :param pk_id: 编辑数据的主键
    :type data: 编辑的数据
    """
    model_pk = inspect(model_name).primary_key[0]
    try:
        model_obj = db_session.query(model_name).filter(model_pk == pk_id)
        result = model_obj.update(data)
        db_session.commit()
        return result
    except Exception as e:
        db_session.rollback()
        raise e
Example #7
0
def update_rows(model_name, data, *args, **kwargs):
    """
    批量修改数据
    :param model_name:
    :param data:
    :param args:
    :param kwargs:
    :return:
    """
    try:
        model_obj = db_session.query(model_name).filter(*args).filter_by(**kwargs)
        result = model_obj.update(data, synchronize_session=False)
        db_session.commit()
        return result
    except Exception as e:
        db_session.rollback()
        raise e
Example #8
0
def count(model_name, *args, **kwargs):
    """
    计数
    Usage:
        # 方式一
        count(User, User.id > 1)
        # 方式二
        test_condition = {
            'name': "Larry"
        }
        count(User, **test_condition)
    :param model_name:
    :param args:
    :param kwargs:
    :return: 0/Number(int)
    """
    result_count = db_session.query(model_name).filter(*args).filter_by(**kwargs).count()
    return result_count
Example #9
0
def get_lists(model_name, *args, **kwargs):
    """
    获取列表信息
    Usage:
        # 方式一
        get_lists(User, User.id > 1)
        # 方式二
        test_condition = {
            'name': "Larry"
        }
        get_lists(User, **test_condition)
    :param model_name:
    :param args:
    :param kwargs:
    :return: None/list
    """
    lists = db_session.query(model_name).filter(*args).filter_by(**kwargs).all()
    return lists
Example #10
0
def get_row(model_name, *args, **kwargs):
    """
    获取信息
    Usage:
        # 方式一
        get_row(User, User.id > 1)
        # 方式二
        test_condition = {
            'name': "Larry"
        }
        get_row(User, **test_condition)
    :param model_name:
    :param args:
    :param kwargs:
    :return: None/object
    """
    row = db_session.query(model_name).filter(*args).filter_by(**kwargs).first()
    return row