Skip to main content

Yet Another Document Mapper (ODM) for MongoDB

Project description

https://travis-ci.org/zzzsochi/yadm.svg?branch=master https://coveralls.io/repos/zzzsochi/yadm/badge.png

It’s small and simple ODM for use with MongoDB.

Full documentation: http://yadm.readthedocs.org

Requirements

YAMD support MongoDB version 3.x only. MongoDB 2.x is not supported.

Minimal version of python is 3.4.

Quick start

import pymongo
from yadm import Database, Document, fields


# Create model
class BlogPost(Document):
    __collection__ = 'blog_posts'

    title = fields.StringField()
    body = fields.StringField()


# Create post
post = BlogPost()
post.title = 'Small post'
post.body = 'Bla-bla-bla...'

# Connect to database
client = pymongo.MongoClient('localhost', 27017)
db = Database(client, 'test')

# Insert post to database
db.insert(post)

# Query posts
qs = db(BlogPost).find({'title': {'$regex': '^S'}})
assert qs.count() > 0

for post in qs:
    assert post.title.startswith('S')

# Query one post
post = db(BlogPost).find_one({'title': 'Small post'})

# Change post
post.title = 'Bla-bla-bla title'

# Save changed post
db.save(post)

CHANGES

1.4.9 (2017-07-06)

  • Add QuerySet.read_primary method for simple setup read_preference.Primary.

1.4.4 (2017-05-17)

  • Add TimedeltaField for stores durations;

  • Add SimpleEmbeddedDocumentField for simply create embedded documents.

class Doc(Document):
    embedded = SimpleEmbeddedDocumentField({
        'i': IntegerField(),
        's': StringField(),
    })

1.4.3 (2017-05-14)

  • Add StaticField for static data.

1.4.2 (2017-04-09)

  • Additional arguments (like write_concern) for write operations;

  • create_fake save the documents with write concern “majority” by default.

1.4.0 (2017-04-05)

  • Drop pymongo 2 support;

  • Additional options for databases and collections;

  • Add Database.get_document;

  • Add TypedEmbeddedDocumentField;

  • reload argument of Database.update_one must be keyword

    (may be backward incompotable).

1.3.1 (2017-02-21)

  • Change raw data for Money;

1.3.0 (2017-02-19)

  • Add currency support to Money:
    • Totaly rewrite Money type. Now it is not subclass of Decimal;

    • Add storage for currencies: yadm.fields.money.currency.DEFAULT_CURRENCY_STORAGE;

1.2.1 (2017-01-19)

  • Add QuerySet.find_in for $in queries with specified order;

1.2.0 (2016-12-27)

  • Drop MongoDB 2.X suport;

  • Objects for update and remove results;

  • Use Faker instead fake-factory.

1.1.4 (2016-08-20)

  • Add some features to Bulk:
    • Bulk.update_one(document, **kw): method for add update one document in bulk;

    • Bulk.find(query).update(**kw): update many documents by query;

    • Bulk.find(query).upsert().update(**kw): upsert document;

    • Bulk.find(query).remove(**kw): remove documents;

1.1.3 (2016-07-23)

  • Add QuerySet.ids method for get only documents id’s from queryset;

  • Add Money.total_cents method and Money.from_cents classmethod;

1.1 (2016-04-26)

  • Add cacheing on queryset level and use it for ReferenceField;

  • Add mongo aggregation framework support;

  • Add read_preference setting;

  • Add exc argument to QuerySet.find_one for raise exception if not found;

  • Add multi argument to QuerySet.remove;

  • Deprecate QuerySet.with_id;

  • Refactoring.

1.0 (2015-11-14)

  • Change document structure. No more bad BaseDocument.__data__ attribute:
    • BaseDocument.__raw__: raw data from mongo;

    • BaseDocument.__cache__: cached objects, casted with fields;

    • BaseDocument.__changed__: changed objects.

  • Changes api for custom fields:
    • Not more need create field descriptors for every field;

    • prepare_value called only for setattr;

    • to_mongo called only for save objects to mongo;

    • from_mongo called only for load values from BaseDocument.__raw__;

    • Remove Field.default attribute. Use Field.get_default method;

    • Add Field.get_if_not_loaded and Field.get_if_attribute_not_set method;

    • By default raise NotLoadedError if field not loaded from projection;

  • Changes in ReferenceField:
    • Raise BrokenReference if link is bloken;

    • Raise NotBindingToDatabase if document not saved to database;

  • smart_null keyword for Field;

  • Fields in document must be instances (not classes!);

  • Remove ArrayContainer and ArrayContainerField;

  • Remove old MapIntKeysField and MapObjectIdKeysField. Use new MapCustomKeysField;

  • Add Database.update_one method for run simple update query with specified document;

  • Add QuerySet.distinct;

  • serialize.from_mongo now accept not_loaded sequence with filed names who must mark as not loaded, parent and name;

  • serialize.to_mongo do not call FieldDescriptor.__set__;

  • Fakers! Subsystem for generate test objects;

  • Tests now use pytest;

  • And more, and more…

Project details


Release history Release notifications | RSS feed

This version

1.4.9

Download files

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

Source Distribution

yadm-1.4.9.tar.gz (51.7 kB view details)

Uploaded Source

Built Distribution

yadm-1.4.9-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

File details

Details for the file yadm-1.4.9.tar.gz.

File metadata

  • Download URL: yadm-1.4.9.tar.gz
  • Upload date:
  • Size: 51.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yadm-1.4.9.tar.gz
Algorithm Hash digest
SHA256 d50c24738544a95c0c1d943fecef82c4f0261c60fdb5f18525c42c98b631732d
MD5 191fc654e0df53bc970924cbc6823cfd
BLAKE2b-256 cc93e9249658a1d79ae75c358ee5502f48a3b3dab9e8f4e4231b477363562d31

See more details on using hashes here.

File details

Details for the file yadm-1.4.9-py3-none-any.whl.

File metadata

File hashes

Hashes for yadm-1.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 ad05106580d21503cc7b6794d9d862ee1951593b4a8b56b3408fdd653b112116
MD5 d68ab92a6f239d1659c302d146fba7f6
BLAKE2b-256 59bb71ec3f53a1cabeb5665d2d34366140218984347902bb1e66b2203dca420b

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