Skip to main content

This is a zc.buildout recipe that helps managing schema updates on relational databases.

It currently only supports PostgreSQL.

Defining a managed database

A managed database has to be created (CREATEDB) outside of this recipe. The recipe only takes care of initialising an existing database and upgrading the schema subsequently.

Part definitions look like:

[managed_db]
recipe = gocept.rdbmanagement
dbname = mydatabase
eggs = projectegg
schema = projectegg.schemadir

host = localhost
user = username
password = apassword

Where

dbname

is the name of the PostgreSQL database to work with

eggs

is a list of egg requirements that should be activated before looking up the schema directory resource path

schema

is a setuptools resource path that is a managed schema directory

Managed schema directories

A schema directory contains a set of SQL and Python files that are used to manage the schema for a database. A typical directory looks like this:

$ ls schemadir
__init__.py
init.sql
precondition3.py
update1.sql
update2.sql
update3.sql

Notice: A managed schema directory has to be a Python package.

init.sql

  • Creates the schema beginning from an empty database.

  • After init.sql the current generation will be set to the highest generation number as available from the update scripts. Therefore the init.sql always creates a current database schema and no updates will be run.

updateX.sql

  • Update scripts MUST start with a BEGIN statement and end with a COMMIT statement.

  • Update script X will be run from a database at generation X-1.

preconditionX.py

  • Script must contain a function called precondition which takes one parameter which is an open DB-API2-connection to the database.

  • Precondition script X will be run on a database at generation X-1.

  • Precondition script X has to raise an exception to indicate that the database MUST not be updated to generation X.

Changes

1.1 (2020-04-15)

  • Support Python 3.

1.0 (2015-07-06)

  • Implement ability to use a password when accessing the database, requiring at least PostgreSQL 9.0 for this feature.

  • Require at least Python 2.7.

0.1.2

  • allow newer versions than exactely psycopg2==2.0.6

0.1.1

  • first public release

Release files for gocept.rdbmanagement 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gocept.rdbmanagement 1.1
File Size Uploaded
gocept.rdbmanagement-1.1.tar.gz 5.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gocept.rdbmanagement 1.1
File Interpreter ABI Platform
gocept.rdbmanagement-1.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 10.6 kB

Release files / gocept.rdbmanagement-1.1.tar.gz

Download URL gocept.rdbmanagement-1.1.tar.gz
Size 5.2 kB
Tags Source
SHA-256 checksum
How to use checksums
3b5b694ffeefd09b5bec8769e8ce1c3b31ed3a431abb9d9987038cce538c4192
BLAKE2b-256 checksum
How to use checksums
ec107028e51ee36e0444a21862d25ab6ef7006964d072641c0ccaf3ba13d8011
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.8.2

Release files / gocept.rdbmanagement-1.1-py2.py3-none-any.whl

Download URL gocept.rdbmanagement-1.1-py2.py3-none-any.whl
Size 5.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
1e27bb745e3d9d10e60605b9425d9778d64477ff2fd820fe96c583adc71976f0
BLAKE2b-256 checksum
How to use checksums
380cae0f0e2c6b66514ef3658d20117f7c88e1f8b98d3e6b4d53396e39c48aa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.44.1 CPython/3.8.2

Release history Release notifications | RSS feed

This release

1.1 This release

2 release files

1.0

1 release file

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page