docstr: Insert a multitude of fingerprints.
  
  :param song_id: Song identifier the fingerprints belong to
  :param hashes: A sequence of tuples in the format (hash, offset)
      - hash: Part of a sha1 hash, in hexadecimal format
      - offset: Offset this hash was created from/at.
  :param batch_size: insert batches.
docstr_tok: ["Insert","a","multitude","of","fingerprints",".",":","param","song_id",":","Song","identifier","the","fingerprints","belong","to",":","param","hashes",":","A","sequence","of","tuples","in","the","format","(","hash",",","offset",")","-","hash",":","Part","of","a","sha1","hash",",","in","hexadecimal","format","-","offset",":","Offset","this","hash","was","created","from\/at",".",":","param","batch_size",":","insert","batches","."]
code: def insert_hashes(
      self,
      song_id: int,
      hashes: List[Tuple[str, int]],
      batch_size: int = 1000,
  ) -> None:
      """
      Insert a multitude of fingerprints.
  
      :param song_id: Song identifier the fingerprints belong to
      :param hashes: A sequence of tuples in the format (hash, offset)
          - hash: Part of a sha1 hash, in hexadecimal format
          - offset: Offset this hash was created from/at.
      :param batch_size: insert batches.
      """
  
imports: import abc
  import importlib
  from typing import Dict, List, Tuple
  from dejavu.config.settings import DATABASES
label_desc: Use image node_id 16 for calling the BaseDatabase obj's underlying member method code with example usage: obj.insert_hashes(song_id, hashes, batch_size) without return types