code: def get_dataframes(symbols=("sne", "goog", "tsla"), source='yahoo', refresh=False):
      
      symbols = util.make_symbols(list(symbols))
      if refresh:
          symbols_to_refresh = symbols
      else:
          symbols_to_refresh = [sym for sym in symbols if not Equity.objects.filter(symbol=sym).exists()]
      source = source.lower().strip()
      if source in ('yahoo', 'google'):
          source += '_finance'
      if source[:3] == 'fed':
          source = 'federal_reserve_economic_data'
      ccpanda = ccp.ConcurrentPandas()
      # set the data source
      getattr(ccpanda, "set_source_" + source)()
      if symbols_to_refresh:
          # tell concurrent pandas which keys/symbols to retrieve
          ccpanda.insert_keys(symbols_to_refresh)
          # start concurrentpandas threads
          ccpanda.consume_keys_asynchronous_threads()
          # FIXME: is there a better/faster iterator to use like `ccpanda.output_map` attribute?
          pseudodict = ccpanda.return_map()
      else:
          pseudodict = {}
      table = {}
      for sym in symbols:
          e, created = None, False
          if not sym in symbols_to_refresh:
              e, created = Equity.objects.get_or_create(symbol=sym)
          if created or not e or not e.time_series or sym in symbols_to_refresh:
              e, created = Equity.objects.get_or_create(
                  symbol=sym,
                  name=sym,  # FIXME: use data source to find equity name!
                  time_series=pseudodict[sym].to_json(),
                  )
          table[sym] = pd.io.json.read_json(path_or_buf=e.time_series, orient='columns', typ='frame', convert_dates=True)
      return table
docs: Retreive table of market data ("Close", "Volume", "Adj Close") for each symbol requested
  
      >>> dfdict = get_dataframes('GOOG', 'SNE')