A python interface to handle connection to a mongod instance
Project description
# Mongo Adapter
[![Build Status][travis-img]][travis-url]
A python implementation of a mongo adapter.
The idea is to make a base class that handles the connection to a mongod instance.
It is nice to handle the connection in the same way for different python projects that involves a mongo database.
The Mongo Adapter takes a client as init argument and then we connect to a database with `setup(database)`, forunately `mongo_adapter` can handle the client part as well.
**Example:**
```python
from mongo_adapter import MongoAdapter, get_client
db_name = 'test'
client = get_client()
adapter = MongoAdapter(client)
adapter.setup(dbname)
assert adapter.db == db_name
```
## Intended usage
The intended usage is here illustrated with an example
```python
from mongo_adapter import MongoAdapter, get_client
class LibraryAdapter(MongoAdapter):
def setup(self, database='library'):
"""Overrides the basic setup method"""
self.db = database
self.books_collection = self.db.book
self.user_collection = self.db.book
def add_book(self, title, author):
"""Add a book to the books collection"""
result = self.books_collection.insert_one(
{
'title': title,
'author': author
}
)
return result
if __name__ == '__main__':
client = get_client()
adapter = LibraryAdapter(client, database='library')
adapter.add_book('Moby Dick', 'Herman Melville')
```
## API
### Client
```python
def check_connection(client):
"""Check if the mongod process is running
Args:
client(MongoClient)
Returns:
bool
"""
def get_client(host='localhost', port=27017, username=None, password=None,
uri=None, mongodb=None, timeout=20):
"""Get a client to the mongo database
Args:
host(str): Host of database
port(int): Port of database
username(str)
password(str)
uri(str)
timeout(int): How long should the client try to connect
Returns:
client(pymongo.MongoClient)
"""
```
### Adapter
```python
class MongoAdapter(object):
"""Adapter for communicating with a mongo database"""
def __init__(self, client=None, db_name=None):
"""
Args:
client(MongoClient)
db_name(str)
"""
self.client = client
self.db = None
self.db_name = None
if (db_name and client):
self.setup(database)
def init_app(self, app):
"""Setup via Flask"""
host = app.config.get('MONGO_HOST', 'localhost')
port = app.config.get('MONGO_PORT', 27017)
db_name = app.config['MONGO_DBNAME']
LOG.info("connecting to database: %s:%s/%s", host, port, db_name)
self.setup(db_name=db_name, db=app.extensions['pymongo']['MONGO'][1])
def setup(self, db_name, db=None):
"""Setup connection to a database
Args:
db_name(str)
db(pymongo.Database)
"""
if db:
self.db = db
self.db_name = db.name
else:
self.db = self.client[db_name]
self.db_name = db_name
```
[travis-url]: https://travis-ci.org/moonso/mongo_adapter
[travis-img]: https://img.shields.io/travis/moonso/mongo_adapter/master.svg?style=flat-square
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
mongo_adapter-0.1.1.tar.gz
(5.4 kB
view details)
Built Distribution
File details
Details for the file mongo_adapter-0.1.1.tar.gz
.
File metadata
- Download URL: mongo_adapter-0.1.1.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 854744334539db82b68f6d6f80eefad0e96f0ba59c55ef31d6bc42161cad9bf9 |
|
MD5 | b76f6e595970ce23cdd26e93799f16a7 |
|
BLAKE2b-256 | 59f48760bf03341d5dd67b2f5dd19940167fc6d917caace2c16018914aac5cfd |
File details
Details for the file mongo_adapter-0.1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: mongo_adapter-0.1.1-py2.py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b87faeffd748288ec9a2a4cb22557334038fb8598cb471bfa67021e692a90702 |
|
MD5 | c15cf405b6625a80a0581212467fa3e9 |
|
BLAKE2b-256 | 429b37e1662a4b0b31ab04415d15b18687ed10e3800d4cf7f4b17eca46b1f0fd |