Skip to main content

Yet another MongoDB ORM for Python. Signals included!

Project description

Yet another MongoDB ORM for Python. Signals included!

(Note: signals can be used independently from miongo models)

Still in development, feedback is highly appreciated.

Usage Examples

Installation:

pip install miongo

Models

Here’s a simple example of model usage:

#!/usr/bin/env python
import pymongo
from miongo import models

# this is always required
# mingo do not implement mongodb connection, you should do that
models.mongodb_database = pymongo.MongoClient().test_database


class TestModel(models.Model):
    _collection = 'testmodel'

    uid = models.Field()
    name = models.Field()
    enabled = models.Field(default=True)

# creating and saving
model = TestModel()
model.uid = 1
model.name = 'Antony'
model.save()

# finding in db
model = TestModel()
model.find({'uid': 1})
print model.uid  # 1
print model.name  # Antony
print model.enabled  # True

Signals

Signals can be used independently with your models too! Just use signals.SignalEmitterMixin, specify AVAILABLE_SIGNALS and call self.emit_signal(signal_type) to fire a signal when needed.

Here’s an example of implementing before and after save signals:

#!/usr/bin/env python
import pymongo
from miongo import signals, models

models.mongodb_database = pymongo.MongoClient().test_database

# signals.SignalEmitterMixin is important here
# it also can be used with other model classes
class TestModel(models.Model, signals.SignalEmitterMixin):
    _collection = 'testmodel'

    BEFORE_SAVE = 0
    AFTER_SAVE = 1
    AVAILABLE_SIGNALS = [BEFORE_SAVE, AFTER_SAVE]

    name = models.Field()

    def save(self):
        self.emit_signal(self.BEFORE_SAVE)
        print 'Saving now!'
        super(TestModel, self).save()
        self.emit_signal(self.AFTER_SAVE)

# let's define function that will be used by signal
# you may use instance to modify object
def signal_function(signal_type, instance):
    if signal_type == TestModel.BEFORE_SAVE:
        print 'Before save'
    elif signal_type == TestModel.AFTER_SAVE:
        print 'After save'

model = TestModel()

TestModel.connect_to_signal(TestModel.BEFORE_SAVE, signal_function)
TestModel.connect_to_signal(TestModel.AFTER_SAVE, signal_function)

model.save()

# output is:
#
# Before save
# Saving now!
# After save

(Note signals can be connected to the instance too)

Credits

Author: Anton Kasyanov (antony.kasyanov@gmail.com)

Special thanks to: Ruslan Didyk, Igor Emelyanov

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

miongo-0.1.1.tar.gz (4.9 kB view details)

Uploaded Source

File details

Details for the file miongo-0.1.1.tar.gz.

File metadata

  • Download URL: miongo-0.1.1.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for miongo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4e06abf693d79906e420d1ad903e2686b77eb2ee4f92fd8dfc458543d3346f43
MD5 667627f823c228fcafe1baf46267c7b0
BLAKE2b-256 afbabac5bc99a1dce8ab4d321e253c07d0509a3b797c4a31b78112e57e3afa0e

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