Skip to main content

Migrations for MongoEngine ODM inspired by Django

Project description

Mongoengine-migrate

version pyversions travis license

Framework-agnostic schema migrations for Mongoengine ODM. Inspired by Django migrations system.

Read documentation

WARNING: this is an unstable version of software. Please backup your data before migrating

Installation

pip3 install mongoengine-migrate

Features

  • Documents
    • Creating, dropping, renaming
    • Renaming a collection
    • Creating, dropping, renaming of fields
    • Converting to/from a DynamicDocument
    • Inheritance
  • Embedded documents
    • Recursive creating, dropping
    • Renaming
    • Recursive creating, dropping, renaming of fields
    • Converting to/from a DynamicEmbeddedDocument
    • Inheritance
  • Altering fields in document and embedded documents
    • Changing of init parameters such as db_field, required, etc.
    • Convertion between field types (if possible)
  • Indexes
    • Creating, dropping, renaming
    • Handling fields constraints such as unique and unique_with
  • Automatic select a query or a python loop to perform an update depending on MongoDB version
  • Two policies of how to work with existing data which does not meet to mongoengine schema

All mongoengine field types are supported, including simple types, lists, dicts, references, GridFS, geo types, generic types.

Typical migration file

from mongoengine_migrate.actions import *

# Existing data processing policy
# Possible values are: strict, relaxed
policy = "strict"

# Names of migrations which the current one is dependent by
dependencies = [
    'previous_migration'
]

# Action chain
actions = [
    CreateDocument('Author', collection='author'),
    CreateField('Author', 'name', choices=None, db_field='name', default=None, max_length=None,
        min_length=None, null=False, primary_key=False, regex=None, required=False,
        sparse=False, type_key='StringField', unique=False, unique_with=None),
    RenameField('Book', 'name', new_name='caption'),
    AlterField('Book', 'caption', required=True, db_field='caption'),
    AlterField('Book', 'year', type_key='IntField', min_value=None, max_value=None),
    DropField('Book', 'isbn'),
    CreateField('Book', 'author', choices=None, db_field='author', dbref=False, default=None,
        target_doctype='Author', null=False, primary_key=False, required=False, sparse=False,
        type_key='ReferenceField', unique=False, unique_with=None),
]

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

mongoengine-migrate-0.0.3.tar.gz (76.9 kB view details)

Uploaded Source

File details

Details for the file mongoengine-migrate-0.0.3.tar.gz.

File metadata

  • Download URL: mongoengine-migrate-0.0.3.tar.gz
  • Upload date:
  • Size: 76.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.10

File hashes

Hashes for mongoengine-migrate-0.0.3.tar.gz
Algorithm Hash digest
SHA256 d20498cdaa56e08cab87211d2c6980c3f1c62518fe4d10d22eea17a8070340ca
MD5 371a9bbdf65135157551dd7beda88526
BLAKE2b-256 e25115f352c639eb1e4760e1cdae18d0aa4a47c268441b5c9988e197642b1c5d

See more details on using hashes here.

Supported by

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