Source code for fabliip.database.pgsql

from getpass import getpass

from fabric import api


[docs]def dump(backup_path, database_name, user='postgres', host=None, password=None): """ Backs up the given database to the given file as a PostgreSQL archive. If host is set to None, a local connection will be used, so you'll need to be able to sudo to the given user. Otherwise, a standard password connection will be used and the user will be asked for a password. """ if host is None: api.sudo('pg_dump -Fc {database_name} > {backup_path}' .format( database_name=database_name, backup_path=backup_path, ), user=user) else: if password is None: password = getpass('Enter database password for {user}: ' .format(user=user)) with api.shell_env(PGPASSWORD=password): api.run('pg_dump -Fc -U {user} -h {host} {database_name} >' ' {backup_path}' .format( user=user, host=host, database_name=database_name, backup_path=backup_path, ))