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.
reset_session
()[source]¶ Reset the session which means setting the global engine and session factory instances to None.
Subpackages¶
Submodules¶
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'¶
-
Module to manage custom queries under SQLA backend.
-
class
aiida.backends.sqlalchemy.queries.
SqlaQueryManager
(backend)[source]¶ Bases:
aiida.backends.general.abstractqueries.AbstractQueryManager
SQLAlchemy implementation of custom queries, for efficiency reasons.
-
__abstractmethods__
= frozenset({})¶
-
__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.
-
This module contains the codebase for the setUpClass and tearDown methods used internally by the AiidaTestCase. This inherits only from ‘object’ to avoid that it is picked up by the automatic discovery of tests (It shouldn’t, as it risks to destroy the DB if there are not the checks in place, and these are implemented in the AiidaTestCase.
-
class
aiida.backends.sqlalchemy.testbase.
SqlAlchemyTests
[source]¶ Bases:
aiida.backends.testimplbase.AiidaTestImplementation
Base class to test SQLA-related functionalities.
-
__abstractmethods__
= frozenset({})¶
-
__module__
= 'aiida.backends.sqlalchemy.testbase'¶
-
_abc_impl
= <_abc_data object>¶
-
_backend
= None¶
-
property
backend
¶ Get the backend.
-
connection
= None¶
-
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.