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 dependancies
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)