class_docstr: The SQLStorageAdapter allows ChatterBot to store conversation
  data in any database supported by the SQL Alchemy ORM.
  
  All parameters are optional, by default a sqlite database is used.
  
  It will check if tables are present, if they are not, it will attempt
  to create the required tables.
  
  :keyword database_uri: eg: sqlite:///database_test.sqlite3',
      The database_uri can be specified to choose database driver.
  :type database_uri: str
class_docstr_tok: ["The","SQLStorageAdapter","allows","ChatterBot","to","store","conversation","data","in","any","database","supported","by","the","SQL","Alchemy","ORM",".","All","parameters","are","optional",",","by","default","a","sqlite","database","is","used",".","It","will","check","if","tables","are","present",",","if","they","are","not",",","it","will","attempt","to","create","the","required","tables",".",":","keyword","database_uri",":","eg",":","sqlite",":","\/\/\/database_test.sqlite3","'",",","The","database_uri","can","be","specified","to","choose","database","driver",".",":","type","database_uri",":","str"]
docstr: Creates multiple statement entries.
docstr_tok: ["Creates","multiple","statement","entries","."]
code: def create_many(self, statements):
      """
      Creates multiple statement entries.
      """
      Statement = self.get_model("statement")
      Tag = self.get_model("tag")
  
      session = self.Session()
  
      create_statements = []
      create_tags = {}
  
      for statement in statements:
          statement_data = statement.serialize()
          tag_data = statement_data.pop("tags", [])
  
          statement_model_object = Statement(**statement_data)
  
          if not statement.search_text:
              statement_model_object.search_text = (
                  self.tagger.get_text_index_string(statement.text)
              )
  
          if (
              not statement.search_in_response_to
              and statement.in_response_to
          ):
              statement_model_object.search_in_response_to = (
                  self.tagger.get_text_index_string(
                      statement.in_response_to
                  )
              )
  
          new_tags = set(tag_data) - set(create_tags.keys())
  
          if new_tags:
              existing_tags = session.query(Tag).filter(
                  Tag.name.in_(new_tags)
              )
  
              for existing_tag in existing_tags:
                  create_tags[existing_tag.name] = existing_tag
  
          for tag_name in tag_data:
              if tag_name in create_tags:
                  tag = create_tags[tag_name]
              else:
                  # Create the tag if it does not exist
                  tag = Tag(name=tag_name)
  
                  create_tags[tag_name] = tag
  
              statement_model_object.tags.append(tag)
          create_statements.append(statement_model_object)
  
      session.add_all(create_statements)
      session.commit()
  
file_path: ChatterBot/chatterbot/storage/sql_storage.py
imports: from chatterbot.storage import StorageAdapter
label_desc: Use image node_id 9 for calling the SQLStorageAdapter obj's underlying member method code with example usage: obj.create_many(statements) without return types