class_docstr: Base class for database framework wrappers.
  
  Attributes
  ----------
  host: str
     It can be either:
        1. Known hostname or IP address in which database server resides.
        2. URI: A database framework specific connection string.
  name: str
     Name of database containing experiments.
  port: int
     Port that database server listens to for requests.
  username: str
      Name of user with write/read permissions to database with name `name`.
  password: str
      Secret phrase of user, `username`.
docstr: Create given indexes if they do not already exist in database.
  
  Parameters
  ----------
  collection_name : str
     A collection inside database, a table.
  keys: str or list of tuples
     Can be a string representing a key to index, or a list of tuples
     with the structure `[(key_name, sort_order)]`. `key_name` must be a
     string and sort_order can be either ``Database.ASCENDING`` or
     ``Database.DESCENDING``.
  unique: bool, optional
     Ensure each document have a different key value. If not, operations
     like `write()` and `read_and_write()` will raise
     `DuplicateKeyError`.
     Defaults to False.
  
  Notes
  -----
  Depending on the backend, the indexing operation might operate in
  background. This means some operations on the database might occur
  before the indexes are totally built.
docstr_tok: ["Create","given","indexes","if","they","do","not","already","exist","in","database",".","Parameters","--","--","--","--","--","collection_name",":","str","A","collection","inside","database",",","a","table",".","keys",":","str","or","list","of","tuples","Can","be","a","string","representing","a","key","to","index",",","or","a","list","of","tuples","with","the","structure","`","[","(","key_name",",","sort_order",")","]","`",".","`","key_name","`","must","be","a","string","and","sort_order","can","be","either","``","Database.ASCENDING","``","or","``","Database.DESCENDING","``",".","unique",":","bool",",","optional","Ensure","each","document","have","a","different","key","value",".","If","not",",","operations","like","`","write","(",")","`","and","`","read_and_write","(",")","`","will","raise","`","DuplicateKeyError","`",".","Defaults","to","False",".","Notes","--","--","-","Depending","on","the","backend",",","the","indexing","operation","might","operate","in","background",".","This","means","some","operations","on","the","database","might","occur","before","the","indexes","are","totally","built","."]
code: def ensure_index(self, collection_name, keys, unique=False):
      """Create given indexes if they do not already exist in database.
  
      Parameters
      ----------
      collection_name : str
         A collection inside database, a table.
      keys: str or list of tuples
         Can be a string representing a key to index, or a list of tuples
         with the structure `[(key_name, sort_order)]`. `key_name` must be a
         string and sort_order can be either ``Database.ASCENDING`` or
         ``Database.DESCENDING``.
      unique: bool, optional
         Ensure each document have a different key value. If not, operations
         like `write()` and `read_and_write()` will raise
         `DuplicateKeyError`.
         Defaults to False.
  
      Notes
      -----
      Depending on the backend, the indexing operation might operate in
      background. This means some operations on the database might occur
      before the indexes are totally built.
  
      """
  
imports: import logging
  from abc import abstractmethod, abstractproperty
  from orion.core.utils import Factory, GenericFactory
label_desc: Use image node_id 6 for calling the Database obj's underlying member method code with example usage: obj.ensure_index(collection_name, keys, unique) without return types