Skip to main content

Pyjo for MongoDB

Project description

Build Status

pyjo_mongo

A light wrapper around pymongo and pyjo to easily interact with MongoDB documents. See the following example.

Install

pip install pyjo_mongo

How to use

from pymongo import MongoClient
from pyjo import Model, Field, RangeField, EnumField
from pyjo_mongo import Document

db_connection = MongoClient(MONGODB_URL)[DB_NAME]


class Gender(Enum):
    female = 0
    male = 1


class Address(Model):
    city = Field(type=str)
    postal_code = Field(type=int)
    address = Field()


class User(Document):
    __meta__ = {
        'db_connection': lambda: db_connection,
        'collection_name': 'users',
        'indexes': [
            {
                'fields': ['username'],
                'unique': True,
                'index_background': True,
            },
            ['first_name', 'last_name'],
        ],
    }

    username = Field(type=str, repr=True, required=True)
    first_name = Field(type=str)
    last_name = Field(type=str)
    age = RangeField(min=18, max=120)
    gender = EnumField(enum=Gender)
    address = Field(type=Address)
    active = Field(type=bool, default=True)
u = User(username='mp')
u.id
# None
u.save()
u.id
# ObjectId('5a5ca86080a9b8291874f4db')

# objects is a class property built around a pymongo Cursor
# and will allow you to perform basic operations

u2 = User.objects.find_one({'username': 'mp'})
u2.gender = Gender.male
u2.save()

u.reload()
u.gender
# Gender.male

# queries use the same syntax of pymongo and automatically return pyjo data models
for user in User.objects.find({'active': True}):
    print(user)
# <User(username=mp)>

# You can perform ordering operations on querysets
for user in User.objects.order_by('gender', '-age'):
    print(user.username)
    print(user.age)

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

pyjo_mongo-0.9.1.tar.gz (6.4 kB view details)

Uploaded Source

File details

Details for the file pyjo_mongo-0.9.1.tar.gz.

File metadata

  • Download URL: pyjo_mongo-0.9.1.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

File hashes

Hashes for pyjo_mongo-0.9.1.tar.gz
Algorithm Hash digest
SHA256 50979fb46a5304ac4acf43d2b53c7c78083b1c55fce57827988f60726c9f2bd9
MD5 24efef4510fcb6b34a65b08278c6151f
BLAKE2b-256 fcbea1077c58a1c0831f5b1a4ccfc6c40a4f576c717b5804c271ba91daf6a1df

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