RelationalDatabase

RelationalDatabase is an abstract base class for different types of relational databases. The class definition includes several abstract methods intended to be overridden by the subclasses. These methods primarily facilitate core database operations.

Overview

RelationalDatabase provides a pattern for designing various types of relational databases. It contains abstract methods that outline the fundamental operations of a relational database. These operations contain connecting, closing, creating tables on the database, and the CRUD (Create, Read, Update, Delete) operation methods which are insert, select, update_database and delete.

Example

Due to its abstract nature, RelationalDatabase cannot be instantiated. However, subsequent code shows an example of a concrete subclass SQLDatabase which inherits from this class:

from automata.core.base.database.relational import SQLDatabase

db_instance = SQLDatabase()
db_instance.connect('path/to/database.db')
db_instance.create_table('test_table', {'id': int, 'name': str, 'email': str})
db_instance.insert('test_table', {'id': 1, 'name': 'Test', 'email': 'test@email.com'})
data = db_instance.select('test_table', ['id', 'name', 'email'], {'id': 1})
print(data)
db_instance.close()

Limitations

The RelationalDatabase class is abstract and cannot be used directly to create a database. It is intended to serve as a base class to be subclassed by classes that implement specific databases.

Follow-up Questions:

  • What specific databases are implemented from this abstract bases class?

  • How does the implementation vary from different subclasses of this abstract class?