Initialize SQLite in Memory Only Database
    
    Args:
        initTime(Optional[bool]): If True, it will print the amount of time to generate database.

    Returns:
        tuple: The tuple contains sqlalchemy_url(str), which is the path to use 
        when creating a session as well as engine(str), which is the path to use
        when creating a session.

    Example::
    
        from gsshapy.lib.db_tools import init_sqlite_memory, create_session
        
        sqlalchemy_url, engine = init_sqlite_memory()
        
        db_work_sessionmaker = get_sessionmaker(sqlalchemy_url, engine)

        db_work_session = db_work_sessionmaker()
        ##DO WORK
        
        db_work_session.close()

def init_sqlite_memory(initTime=False):
    """
    Initialize SQLite in Memory Only Database
    
    Args:
        initTime(Optional[bool]): If True, it will print the amount of time to generate database.

    Returns:
        tuple: The tuple contains sqlalchemy_url(str), which is the path to use 
        when creating a session as well as engine(str), which is the path to use
        when creating a session.

    Example::
    
        from gsshapy.lib.db_tools import init_sqlite_memory, create_session
        
        sqlalchemy_url, engine = init_sqlite_memory()
        
        db_work_sessionmaker = get_sessionmaker(sqlalchemy_url, engine)

        db_work_session = db_work_sessionmaker()
        ##DO WORK
        
        db_work_session.close()
    """
    sqlalchemy_url = 'sqlite://'
    engine = create_engine(sqlalchemy_url,
                           poolclass=SingletonThreadPool)
    start = time.time()
    metadata.create_all(engine)
    
    if initTime:
        print('TIME: {0} seconds'.format(time.time() - start))
        
    return sqlalchemy_url, engine