diff options
| author | Adam Chainz <adam@adamj.eu> | 2015-04-01 22:33:27 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-04-09 12:15:50 -0400 |
| commit | 5564d0f2ee9b33d30471eafef30efa71c7c47459 (patch) | |
| tree | e0ddcce25dd2249f1a34a9a2e575ba233a234fcc /django | |
| parent | 727e40c879f893a2c336e396aafdcad60b5d224c (diff) | |
Fixed #24560 -- Added a --dry-run mode to the createcachetable command.
Diffstat (limited to 'django')
| -rw-r--r-- | django/core/management/commands/createcachetable.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/django/core/management/commands/createcachetable.py b/django/core/management/commands/createcachetable.py index 4c014c88fd..c1ec4539b6 100644 --- a/django/core/management/commands/createcachetable.py +++ b/django/core/management/commands/createcachetable.py @@ -22,21 +22,25 @@ class Command(BaseCommand): default=DEFAULT_DB_ALIAS, help='Nominates a database onto which the cache tables will be ' 'installed. Defaults to the "default" database.') + parser.add_argument('--dry-run', action='store_true', dest='dry_run', + help='Does not create the table, just prints the SQL that would ' + 'be run.') def handle(self, *tablenames, **options): db = options.get('database') self.verbosity = int(options.get('verbosity')) + dry_run = options.get('dry_run') if len(tablenames): # Legacy behavior, tablename specified as argument for tablename in tablenames: - self.create_table(db, tablename) + self.create_table(db, tablename, dry_run) else: for cache_alias in settings.CACHES: cache = caches[cache_alias] if isinstance(cache, BaseDatabaseCache): - self.create_table(db, cache._table) + self.create_table(db, cache._table, dry_run) - def create_table(self, database, tablename): + def create_table(self, database, tablename, dry_run): cache = BaseDatabaseCache(tablename, {}) if not router.allow_migrate_model(database, cache.cache_model_class): return @@ -74,11 +78,19 @@ class Command(BaseCommand): full_statement.append(' %s%s' % (line, ',' if i < len(table_output) - 1 else '')) full_statement.append(');') + full_statement = "\n".join(full_statement) + + if dry_run: + self.stdout.write(full_statement) + for statement in index_output: + self.stdout.write(statement) + return + with transaction.atomic(using=database, savepoint=connection.features.can_rollback_ddl): with connection.cursor() as curs: try: - curs.execute("\n".join(full_statement)) + curs.execute(full_statement) except DatabaseError as e: raise CommandError( "Cache table '%s' could not be created.\nThe error was: %s." % |
