Creating a database

Database classes are used to persist key/value pairs in a database. Values can be a complex object such as an array or a dictionary.

The class has three mandatory methods, connect, put and get.


connect should initialise a connection to a database and store that connection object as a property of the database module instance.


put stores an object for a given key.


get returns an object for a given key. The object which is returned should be equivalent to the object which was stored.

# We recommend you use the official library
# for your database and import it here
import databaselibrary

# Import opsdroid dependencies
from opsdroid.database import Database

class MyDatabase(Database):

  async def connect(self, opsdroid):
    # Create connection object for database
    self.connection = await databaselibrary.connect()

  async def put(self, key, value):
    # Insert the object into the database
    response = await self.connection.insert(key, value)

    # Return a bool for whether the insert was successful
    return response.success

  async def get(self, key):
    # Get the object from the database and return it
    return await self.connection.find(key)

If you need help or if you are unsure about something join our gitter channel and ask away! We are more than happy to help you.