aiida.backends.sqlalchemy package¶
Module with implementation of the database backend using SqlAlchemy.
-
aiida.backends.sqlalchemy.
get_scoped_session
()[source]¶ Return a scoped session
According to SQLAlchemy docs, this returns always the same object within a thread, and a different object in a different thread. Moreover, since we update the session class upon forking, different session objects will be used.
-
aiida.backends.sqlalchemy.
recreate_after_fork
(engine)[source]¶ Callback called after a fork.
Not only disposes the engine, but also recreates a new scoped session to use independent sessions in the fork.
- Parameters
engine – the engine that will be used by the sessionmaker
-
aiida.backends.sqlalchemy.
reset_session
(profile=None)[source]¶ Resets (global) engine and sessionmaker classes, to create a new one (or creates a new one from scratch if not already available)
- Parameters
profile – the profile whose configuration to use to connect to the database
Subpackages¶
Submodules¶
Simple wrapper around the alembic command line tool that first loads an AiiDA profile.
-
aiida.backends.sqlalchemy.manage.
execute_alembic_command
(command_name, **kwargs)[source]¶ Execute an Alembic CLI command.
- Parameters
command_name – the sub command name
kwargs – parameters to pass to the command
Utilities and configuration of the SqlAlchemy database schema.
-
class
aiida.backends.sqlalchemy.manager.
SqlaBackendManager
[source]¶ Bases:
aiida.backends.manager.BackendManager
Class to manage the database schema.
-
__module__
= 'aiida.backends.sqlalchemy.manager'¶
-
static
alembic_config
()[source]¶ Context manager to return an instance of an Alembic configuration with the current connection inserted.
- Returns
instance of
alembic.config.Config
-
get_schema_version_database
()[source]¶ Return the database schema version.
- Returns
distutils.version.StrictVersion with schema version of the database
-
get_schema_version_reset
(schema_generation_code)[source]¶ Return schema version the database should have to be able to automatically reset to code schema generation.
- Parameters
schema_generation_code – the schema generation of the code.
- Returns
schema version
-
-
class
aiida.backends.sqlalchemy.manager.
SqlaSettingsManager
[source]¶ Bases:
aiida.backends.manager.SettingsManager
Class to get, set and delete settings from the DbSettings table.
-
__module__
= 'aiida.backends.sqlalchemy.manager'¶
-
delete
(key)[source]¶ Delete the setting with the given key.
- Parameters
key – the key identifying the setting
- Raises
~aiida.common.exceptions.NotExistent if the settings does not exist
-
get
(key)[source]¶ Return the setting with the given key.
- Parameters
key – the key identifying the setting
- Returns
Setting
- Raises
~aiida.common.exceptions.NotExistent if the settings does not exist
-
set
(key, value, description=None)[source]¶ Return the settings with the given key.
- Parameters
key – the key identifying the setting
value – the value for the setting
description – optional setting description
-
table_name
= 'db_dbsetting'¶
-
-
class
aiida.backends.sqlalchemy.queries.
SqlaQueryManager
(backend)[source]¶ Bases:
aiida.backends.general.abstractqueries.AbstractQueryManager
SQLAlchemy implementation of custom queries, for efficiency reasons
-
__abstractmethods__
= frozenset({})¶
-
__init__
(backend)[source]¶ - Parameters
backend (
aiida.orm.implementation.sql.SqlBackend
) – The AiiDA backend
-
__module__
= 'aiida.backends.sqlalchemy.queries'¶
-
_abc_impl
= <_abc_data object>¶
-
get_creation_statistics
(user_pk=None)[source]¶ Return a dictionary with the statistics of node creation, summarized by day, optimized for the Django backend.
- Note
Days when no nodes were created are not present in the returned ctime_by_day dictionary.
- Parameters
user_pk – If None (default), return statistics for all users. If user pk is specified, return only the statistics for the given user.
- Returns
a dictionary as follows:
{ "total": TOTAL_NUM_OF_NODES, "types": {TYPESTRING1: count, TYPESTRING2: count, ...}, "ctime_by_day": {'YYYY-MMM-DD': count, ...}
where in ctime_by_day the key is a string in the format ‘YYYY-MM-DD’ and the value is an integer with the number of nodes created that day.
-
Utility functions specific to the SqlAlchemy backend.
-
aiida.backends.sqlalchemy.utils.
delete_nodes_and_connections_sqla
(pks_to_delete)[source]¶ Delete all nodes corresponding to pks in the input. :param pks_to_delete: A list, tuple or set of pks that should be deleted.
-
aiida.backends.sqlalchemy.utils.
flag_modified
(instance, key)[source]¶ Wrapper around sqlalchemy.orm.attributes.flag_modified to correctly dereference utils.ModelWrapper
Since SqlAlchemy 1.2.12 (and maybe earlier but not in 1.0.19) the flag_modified function will check that the key is actually present in the instance or it will except. If we pass a model instance, wrapped in the ModelWrapper the call will raise an InvalidRequestError. In this function that wraps the flag_modified of SqlAlchemy, we derefence the model instance if the passed instance is actually wrapped in the ModelWrapper.