Neat ODM wrapper around great PyMongo driver
Project description
Documentation: #TODO
Ognom is object-to-document mapper for mongodb. Currently ognom uses pymongo as default backend, but you can easily implement your own backend based on another driver (for example asyncio-mongo) if needed, as serialization and storage logic in ognom are separated.
Supports python2.7+, python3.3+, PyPy.
Documentation: #TODO
Install
pip install ognom
Tests
tox
Features
Vanilla python, no dependencies;
From version 1.0 exposes full pymongo API(!);
Easy to write your own backend with your own API.
Quickstart
from ognom.base import ConnectionManager, Document, Collection
from ognom.fields import StringField, IntField
ConnectionManager.connect({
'main': { # ognom use aliases for databases to make it possible to use multiple db's per project
'name': 'birzha_main',
'args': ['127.0.0.1:27017'],
'kwargs': {'socketTimeoutMS': 60000}},})
class Foo(Document):
objects = Collection(
db_name='main'
collection_name='my_foos' # collection name (by default 'foos')
indexes=[{
'index': [('bar', 1), ('baz', -1)],
'background': True}])
bar = StringField(required=True, default='baaar')
baz = IntField(choices=[10, 20, 30, 40, 50])
foo1 = Foo.objects.create({'bar': 'lalala'})
assert Foo.objects.get({'bar': 'lalala'}).id == foo1.id
foo2 = Foo(bar='lololo', baz=10)
assert foo2.id is None
foo2.save()
assert foo2.id is not None
foo2.remove()
foos = Foo.objects.find({'bar': 'lalala'}) # not list but CursorWrapper!
assert len(list(foos)) == 1
Contributors
Lev Orekhov @lorehov
Michael Elovskikh @wronglink
Sardnej @sardnej
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
ognom-0.5.4.tar.gz
(16.2 kB
view details)
File details
Details for the file ognom-0.5.4.tar.gz
.
File metadata
- Download URL: ognom-0.5.4.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6191a1355e5da53514b278f5e9281639792d8d00de0e05dd0f9d11ba0381eed |
|
MD5 | 461eaf2f594fe3e94d979b6eb31f2e95 |
|
BLAKE2b-256 | 800e864702bd6ff08fccfc96099b7a2e65543b14eabddef820ede902cd408afe |