simpleml.utils.initialization module

Util module to initialize SimpleML and configure database management

class simpleml.utils.initialization.AlembicDatabase(alembic_filepath, script_location='migrations', *args, **kwargs)[source]

Bases: simpleml.utils.initialization.BaseDatabase

Base database class to manage dbs with schema tracking. Includes alembic config references

alembic_config
create_tables(base, drop_tables=False, ignore_errors=False)[source]

Creates database tables (and potentially drops existing ones). Assumes to be running under a sufficiently privileged user

Parameters:drop_tables – Whether or not to drop the existing tables first.
Returns:None
downgrade(revision)[source]

Proxy Method to invoke alembic downgrade command to specified revision

initialize(base_list, upgrade=False, **kwargs)[source]

Initialization method to set up database connection and inject session manager

Raises a SimpleML error if database schema is not up to date

Parameters:
  • drop_tables – Bool, whether to drop existing tables in database
  • upgrade – Bool, whether to run an upgrade migration after establishing a connection
Returns:

None

upgrade(revision='head')[source]

Proxy Method to invoke alembic upgrade command to specified revision

validate_schema_version()[source]

Check that the newly initialized database is up-to-date Raises an error otherwise (ahead of any table model mismatches later)

class simpleml.utils.initialization.BaseDatabase(config=None, configuration_section=None, uri=None, use_ssh_tunnel=False, sshtunnel_params={}, **credentials)[source]

Bases: sqlalchemy.engine.url.URL

Base Database class to configure db connection Does not assume schema tracking or any other validation

close_tunnel()[source]
configure_ssh_tunnel(credentials, ssh_config)[source]
create_tables(base, drop_tables=False, ignore_errors=False)[source]

Creates database tables (and potentially drops existing ones). Assumes to be running under a sufficiently privileged user

Parameters:drop_tables – Whether or not to drop the existing tables first.
Returns:None
engine
initialize(base_list, **kwargs)[source]

Initialization method to set up database connection and inject session manager

Raises a SimpleML error if database schema is not up to date

Parameters:
  • drop_tables – Bool, whether to drop existing tables in database
  • upgrade – Bool, whether to run an upgrade migration after establishing a connection
Returns:

None

open_tunnel()[source]
ssh_tunnel
class simpleml.utils.initialization.Database(configuration_section=None, uri=None, database=None, username=None, password=None, drivername=None, host=None, port=None, query=None, *args, **kwargs)[source]

Bases: simpleml.utils.initialization.AlembicDatabase

SimpleML specific configuration to interact with the database Defaults to sqlite db in filestore directory

initialize(base_list=None, **kwargs)[source]

Initialization method to set up database connection and inject session manager

Raises a SimpleML error if database schema is not up to date

Parameters:
  • drop_tables – Bool, whether to drop existing tables in database
  • upgrade – Bool, whether to run an upgrade migration after establishing a connection
Returns:

None