The most Pythonic and friendly-yet-powerful way to use MongoDB
Project description
Mongo-Thingy is the most Pythonic and friendly-yet-powerful way to use MongoDB.
Its main goal is give you full advantage of MongoDB schema-less design by NOT asking you to define schemas in your code.
It also has cool “side-features” such as views (inherited from Thingy), database/collection “discovery”, and more!
Install
$ pip install mongo-thingy
Examples
First steps
Connect, insert and find thingies
>>> from mongo_thingy import connect, Thingy
>>> connect("mongodb://localhost/test")
>>> class User(Thingy):
... pass
>>> user = User({"name": "Mr. Foo", "age": 42}).save()
>>> User.count()
1
>>> User.find_one({"age": 42})
User({'_id': ObjectId(...), 'name': 'Mr. Foo', 'age': 42})
Update thingies
>>> user.age
42
>>> user.age = 1337
>>> user.save()
User({'_id': ObjectId(...), 'name': 'Mr. Foo', 'age': 1337})
Thingy’s views power
Complete information with properties
>>> class User(Thingy):
... @property
... def username(self):
... return "".join(char for char in self.name if char.isalpha())
>>> User.add_view(name="everything", defaults=True, include="username")
>>> user = User.find_one()
>>> user.view("everything")
{'_id': ObjectId(...), 'name': 'Mr. Foo', 'age': 1337, 'username': 'MrFoo'}
Hide sensitive stuff
>>> User.add_view(name="public", defaults=True, exclude="password")
>>> user.password = "t0ps3cr3t"
>>> user.view()
{'_id': ObjectId(...), 'name': 'Mr. Foo', 'age': 1337, 'password': 't0ps3cr3t'}
>>> user.view("public")
{'_id': ObjectId(...), 'name': 'Mr. Foo', 'age': 1337}
Only use certain fields/properties
>>> User.add_view(name="credentials", include=["username", "password"])
>>> user.view("credentials")
{'username': 'MrFoo', 'password': 't0ps3cr3t'}
Database/collection “discovery”
>>> class AuthenticationGroup(Thingy):
... pass
>>> connect("mongodb://localhost/")
>>> AuthenticationGroup.database.name
'authentication'
>>> AuthenticationGroup.collection.name
'group'
Tests
To run Mongo-Thingy tests:
make sure you have a MongoDB database running on localhost:27017;
install developers requirements with pip install -r requirements.txt;
run pytest.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Mongo-Thingy-0.1.3.tar.gz
(3.3 kB
view hashes)