Skip to main content

Consistent partial database dump utility

Project description

XDump

Build Status Coverage Status Documentation Status Latest PyPI version

XDump is an utility to make partial consistent dump and load it into the database.

The idea is to provide an ability to specify what to include in the dump via SQL queries.

Installation

XDump can be obtained with pip:

$ pip install xdump

Usage example

Making a dump (on production replica for example):

>>> from xdump.postgresql import PostgreSQLBackend
>>>
>>> backend = PostgreSQLBackend(dbname='app_db', user='prod', password='pass', host='127.0.0.1', port='5432')
>>> backend.dump(
    '/path/to/dump.zip',
    full_tables=['groups'],
    partial_tables={'employees': 'SELECT * FROM employees ORDER BY id DESC LIMIT 2'}
)

Load a dump on you local machine:

>>> backend = PostgreSQLBackend(dbname='app_db', user='local', password='pass', host='127.0.0.1', port='5432')
>>> backend.load('/path/to/dump.zip')

Dump is compressed by default. Compression level could be changed with passing compression argument to dump method. Valid options are zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED, zipfile.ZIP_BZIP2 and zipfile.ZIP_LZMA.

Verbosity of the output could be customized via verbosity (with values 0, 1 or 2) argument of a backend class.

RDBMS support

At the moment only the following are supported:

  • PostgreSQL

  • SQLite

Django support

Add xdump.extra.django to your INSTALLED_APPS settings:

INSTALLED_APPS = [
   ...,
   'xdump.extra.django',
]

Add XDUMP to your project settings file. It should contain minimum 2 entries:

  • FULL_TABLES - a list of tables, that should be fully dumped.

  • PARTIAL_TABLES - a dictionary with table_name: select SQL

XDUMP = {
    'FULL_TABLES': ['groups'],
    'PARTIAL_TABLES': {'employees': 'SELECT * FROM employees WHERE id > 100'}
}

Optionally you could use a custom backend:

XDUMP = {
    ...,
    'BACKEND': 'importable.string',
}

Run xdump command:

$ ./manage.py xdump dump.zip

Run xload command:

$ ./manage.py xload dump.zip

Possible options to both commands:

  • alias - allows you to choose database config from DATABASES, that is used during the execution;

  • backend - importable string, that leads to custom dump backend class.

The following make command could be useful to get a configured dump from production to your local machine:

sync-production:
    ssh -t $(TARGET) "DJANGO_SETTINGS_MODULE=settings.production /path/to/manage.py xdump /tmp/dump.zip"
    scp $(TARGET):/tmp/dump.zip ./dump.zip
    ssh -t $(TARGET) "rm /tmp/dump.zip"
    DJANGO_SETTINGS_MODULE=settings.local $(PYTHON) manage.py xload ./dump.zip

And usage is:

$ make sync-production TARGET=john@production.com PYTHON=/path/to/python/in/venv

Python support

XDump supports Python 3.4 - 3.7.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xdump-0.4.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

xdump-0.4.0-py2.py3-none-any.whl (13.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file xdump-0.4.0.tar.gz.

File metadata

  • Download URL: xdump-0.4.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xdump-0.4.0.tar.gz
Algorithm Hash digest
SHA256 07dcf245fe33b5efe822ba3840bf31b1d4c03b72ec2e81d1c44f7c32188271df
MD5 3c4f8dd1d7f2a0751ae716edd61cdea4
BLAKE2b-256 f1c66917e71e57ad3e030277b7bbdf7167925f518dfc82c9d07d950d1634b66b

See more details on using hashes here.

File details

Details for the file xdump-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for xdump-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 26d9da026a7b8ce8a2aa972ef0a6a08b908191f8abe7b5bddd90dac547b06b03
MD5 863085d0dc7c979bb4999839a5f36d44
BLAKE2b-256 86761eaf875c3b01951a7c06dceb4f5962b11b850345b78104ea323cdf4a6827

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page