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
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
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
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
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
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
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
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
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
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