Improve connect/disconnect
- document disconnect + sample of usage - add more test cases to prevent github issues regressions
This commit is contained in:
		| @@ -4,9 +4,11 @@ | ||||
| Connecting to MongoDB | ||||
| ===================== | ||||
|  | ||||
| To connect to a running instance of :program:`mongod`, use the | ||||
| :func:`~mongoengine.connect` function. The first argument is the name of the | ||||
| database to connect to:: | ||||
| Connections in MongoEngine are registered globally and are identified with aliases. | ||||
| If no `alias` is provided during the connection, it will use "default" as alias. | ||||
|  | ||||
| To connect to a running instance of :program:`mongod`, use the :func:`~mongoengine.connect` | ||||
| function. The first argument is the name of the database to connect to:: | ||||
|  | ||||
|     from mongoengine import connect | ||||
|     connect('project1') | ||||
| @@ -42,6 +44,9 @@ the :attr:`host` to | ||||
|     will establish connection to ``production`` database using | ||||
|     ``admin`` username and ``qwerty`` password. | ||||
|  | ||||
| .. note:: Calling :func:`~mongoengine.connect` without argument will establish | ||||
|     a connection to the "test" database by default | ||||
|  | ||||
| Replica Sets | ||||
| ============ | ||||
|  | ||||
| @@ -71,6 +76,8 @@ is used. | ||||
| In the background this uses :func:`~mongoengine.register_connection` to | ||||
| store the data and you can register all aliases up front if required. | ||||
|  | ||||
| Documents defined in different database | ||||
| --------------------------------------- | ||||
| Individual documents can also support multiple databases by providing a | ||||
| `db_alias` in their meta data. This allows :class:`~pymongo.dbref.DBRef` | ||||
| objects to point across databases and collections. Below is an example schema, | ||||
| @@ -93,6 +100,33 @@ using 3 different databases to store data:: | ||||
|             meta = {'db_alias': 'users-books-db'} | ||||
|  | ||||
|  | ||||
| Disconnecting an existing connection | ||||
| ------------------------------------ | ||||
| The function :func:`~mongoengine.disconnect` can be used to | ||||
| disconnect a particular connection. This can be used to change a | ||||
| connection globally:: | ||||
|  | ||||
|         from mongoengine import connect, disconnect | ||||
|         connect('a_db', alias='db1') | ||||
|  | ||||
|         class User(Document): | ||||
|             name = StringField() | ||||
|             meta = {'db_alias': 'db1'} | ||||
|  | ||||
|         disconnect(alias='db1') | ||||
|  | ||||
|         connect('another_db', alias='db1') | ||||
|  | ||||
| .. note:: Calling :func:`~mongoengine.disconnect` without argument | ||||
|     will disconnect the "default" connection | ||||
|  | ||||
| .. note:: Since connections gets registered globally, it is important | ||||
|     to use the `disconnect` function from MongoEngine and not the | ||||
|     `disconnect()` method of an existing connection (pymongo.MongoClient) | ||||
|  | ||||
| .. note:: :class:`~mongoengine.Document` are caching the pymongo collection. | ||||
|     using `disconnect` ensures that it gets cleaned as well | ||||
|  | ||||
| Context Managers | ||||
| ================ | ||||
| Sometimes you may want to switch the database or collection to query against. | ||||
| @@ -119,7 +153,7 @@ access to the same User document across databases:: | ||||
|  | ||||
| Switch Collection | ||||
| ----------------- | ||||
| The :class:`~mongoengine.context_managers.switch_collection` context manager | ||||
| The :func:`~mongoengine.context_managers.switch_collection` context manager | ||||
| allows you to change the collection for a given class allowing quick and easy | ||||
| access to the same Group document across collection:: | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user