Show
Ignore:
Timestamp:
03/22/08 21:44:25 (2 years ago)
Author:
akaihola
Message:

[dbpickle] Dumping now skips missing db tables with a warning.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/dbpickle/dbpickle.py

    r136 r210  
    9393        m2ms = [m2m.name for m2m in meta.many_to_many] 
    9494 
    95         for obj in model.objects.all(): 
    96             logging.debug('dumping %s.%s %r' % (app, model_name, obj)) 
    97             pk = obj._get_pk_val() 
    98             objects[app, model_name, pk] = obj 
    99  
    100             for m2m in m2ms: 
    101                 # store many-to-many related objects for every 
    102                 # many-to-many relation of this object 
    103                 foreign_objs = getattr(obj, m2m).all() 
    104                 logging.debug('dumping %s.%s.%s x %d' % (app, model_name, m2m, len(foreign_objs))) 
    105                 m2m_lists.append((obj, m2m, tuple(foreign_objs))) 
     95        try: 
     96            for obj in model.objects.all(): 
     97                logging.debug('dumping %s.%s %r' % (app, model_name, obj)) 
     98                pk = obj._get_pk_val() 
     99                objects[app, model_name, pk] = obj 
     100 
     101                for m2m in m2ms: 
     102                    # store many-to-many related objects for every 
     103                    # many-to-many relation of this object 
     104                    foreign_objs = getattr(obj, m2m).all() 
     105                    logging.debug('dumping %s.%s.%s x %d' % (app, model_name, m2m, len(foreign_objs))) 
     106                    m2m_lists.append((obj, m2m, tuple(foreign_objs))) 
     107        except backend.Database.OperationalError: 
     108            logging.warning('table for %r not found' % model) 
    106109 
    107110    # pickle all objects and many-to-many relations on disk 
     
    225228        os.environ['DJANGO_SETTINGS_MODULE'] = opts.settings 
    226229 
    227     from django.db import transaction 
    228     from django.db import models 
    229  
     230    from django.db import transaction, models, backend 
    230231 
    231232    if opts.action == 'dump':