Skip to content

Files

Latest commit

 

History

History
66 lines (51 loc) · 2.13 KB

database.rst

File metadata and controls

66 lines (51 loc) · 2.13 KB

Databases

ArangoDB server can have an arbitrary number of databases. Each database has its own set of :doc:`collections <collection>` and :doc:`graphs <graph>`. There is a special database named _system, which cannot be dropped and provides operations for managing users, permissions and other databases. Most of the operations can only be executed by admin users. See :doc:`user` for more information.

Example:

.. testcode::

    from arango import ArangoClient

    # Initialize the ArangoDB client.
    client = ArangoClient()

    # Connect to "_system" database as root user.
    # This returns an API wrapper for "_system" database.
    sys_db = client.db('_system', username='root', password='passwd')

    # List all databases.
    sys_db.databases()

    # Create a new database named "test" if it does not exist.
    # Only root user has access to it at time of its creation.
    if not sys_db.has_database('test'):
        sys_db.create_database('test')

    # Delete the database.
    sys_db.delete_database('test')

    # Create a new database named "test" along with a new set of users.
    # Only "jane", "john", "jake" and root user have access to it.
    if not sys_db.has_database('test'):
        sys_db.create_database(
            name='test',
            users=[
                {'username': 'jane', 'password': 'foo', 'active': True},
                {'username': 'john', 'password': 'bar', 'active': True},
                {'username': 'jake', 'password': 'baz', 'active': True},
            ],
        )

    # Connect to the new "test" database as user "jane".
    db = client.db('test', username='jane', password='foo')

    # Make sure that user "jane" has read and write permissions.
    sys_db.update_permission(username='jane', permission='rw', database='test')

    # Retrieve various database and server information.
    db.name
    db.username
    db.version()
    db.status()
    db.details()
    db.collections()
    db.graphs()
    db.engine()

    # Delete the database. Note that the new users will remain.
    sys_db.delete_database('test')

See :ref:`ArangoClient` and :ref:`StandardDatabase` for API specification.