Skip to content

druids/django-psycopg2-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django-psycopg2-extension

Library contains django commands which helps to prepare and manage PostgreSQL database.

Quickstart

Install djjango-psycopg2-extension

pip install django-psycopg2-extension

Add psycopg2_extension to your INSTALLED_APPS:

INSTALLED_APPS = [
    # Django apps...
    'psycopg2_extension',
]

Commands

psqlinit

Django command psqlinit create a database defined in django settings.

You can define specific database settings with standard django DATABASE settings:

DATABASES = {
    'default': {
        ...
        'EXTENSIONS': ['postgis', 'unaccent'],  # extensions to be installed with psqlinit command
        'SNAPSHOT_FILE': Path('data', 'sql', 'local', 'init_default.sql'), # SQL which will be loaded after database initialization
    },
}

Snapshot and extensions are automatically loaded when database is preparing for tests too.

psqlclean

PostgreSQL database requires often call VACUUM and REINDEX. The command psqlclean performs these operations.

You can define specific database settings for psqlclean command with standard django DATABASE settings:

DATABASES = {
    'default': {
        ...
        'VACUUM': {
            'EXCLUDE': ['users_user'],  # list of excluded tables
            'TABLES': ['users_permission'],  # list of tables to vacuum, all tables are selected if the setting is not set
            'TABLES_FULL': ['users_permission'],  # list of tables to vacuum full
            'TABLES_REINDEX': ['users_permission'],  # list of tables to reindex
        }
    },
}

psqlsnapshot

Command which creates SQL dump with pg_dump script and store it to the database 'SNAPSHOT_FILE' setting.

psqlviews

Command which creates views defined in 'VIEWS' setting.

DATABASES = {
    'default': {
        ...
        'VIEWS': {
            'MODELS': {
                'auth.users': ['id', 'email', 'first_name', 'last_name'], # Model name and list of fields
            },
            'SCHEMA': 'public', # Schema name
        }
    }
}

Now you can call psqlviews command to create or remove views.

./manage.py psqlviews --create
./manage.py psqlviews --delete

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages