docs: def smart_insert(cls, engine_or_session, data, minimal_size=5, op_counter=0):
          """
          An optimized Insert strategy.
  
          :return: number of insertion operation been executed. Usually it is
              greatly smaller than ``len(data)``.
  
          **中文文档**
  
          在Insert中, 如果已经预知不会出现IntegrityError, 那么使用Bulk Insert的速度要
          远远快于逐条Insert。而如果无法预知, 那么我们采用如下策略:
  
          1. 尝试Bulk Insert, Bulk Insert由于在结束前不Commit, 所以速度很快。
          2. 如果失败了, 那么对数据的条数开平方根, 进行分包, 然后对每个包重复该逻辑。
          3. 若还是尝试失败, 则继续分包, 当分包的大小小于一定数量时, 则使用逐条插入。
            直到成功为止。
  
          该Insert策略在内存上需要额外的 sqrt(nbytes) 的开销, 跟原数据相比体积很小。
          但时间上是各种情况下平均最优的。
          """
          ses, auto_close = ensure_session(engine_or_session)
  
          if isinstance(data, list):
              # 首先进行尝试bulk insert
              try:
                  ses.add_all(data)
                  ses.commit()
                  op_counter += 1
              # 失败了
              except (IntegrityError, FlushError):
                  ses.rollback()
                  # 分析数据量
                  n = len(data)
                  # 如果数据条数多于一定数量
                  if n >= minimal_size ** 2:
                      # 则进行分包
                      n_chunk = math.floor(math.sqrt(n))
                      for chunk in grouper_list(data, n_chunk):
                          op_counter = cls.smart_insert(
                              ses, chunk, minimal_size, op_counter)
                  # 否则则一条条地逐条插入
                  else:
                      for obj in data:
                          try:
                              ses.add(obj)
                              ses.commit()
                              op_counter += 1
                          except (IntegrityError, FlushError):
                              ses.rollback()
          else:
              try:
                  ses.add(data)
                  ses.commit()
              except (IntegrityError, FlushError):
                  ses.rollback()
  
          if auto_close:
              ses.close()
  
          return op_counter