galaxy.model.orm package

galaxy.model.orm - ORM-related functionality

Submodules

galaxy.model.orm.engine_factory module

galaxy.model.orm.engine_factory.reset_request_query_counts()[source]
galaxy.model.orm.engine_factory.log_request_query_counts(req_id)[source]
galaxy.model.orm.engine_factory.stripwd(s)[source]
galaxy.model.orm.engine_factory.pretty_stack()[source]
galaxy.model.orm.engine_factory.build_engine(url: str, engine_options=None, database_query_profiling_proxy=False, trace_logger=None, slow_query_log_threshold=0, thread_local_log=None, log_query_counts=False)[source]
galaxy.model.orm.engine_factory.set_sqlite_connect_args(engine_options: Dict, url: str) None[source]

Add or update connect_args in engine_options if db is sqlite. Set check_same_thread to False for sqlite, handled by request-specific session. See https://fastapi.tiangolo.com/tutorial/sql-databases/#note

galaxy.model.orm.now module

galaxy.model.orm.now.now()

Return a new datetime representing UTC day and time.

galaxy.model.orm.scripts module

Code to support database helper scripts (create_toolshed_db.py, migrate_toolshed_db.py, etc…).

galaxy.model.orm.scripts.get_config(argv, use_argparse=True, cwd=None)[source]

Read sys.argv and parse out repository of migrations and database url.

>>> import os
>>> from configparser import ConfigParser
>>> from shutil import rmtree
>>> from tempfile import mkdtemp
>>> config_dir = mkdtemp()
>>> os.makedirs(os.path.join(config_dir, 'config'))
>>> def write_ini(path, property, value):
...     p = ConfigParser()
...     p.add_section('app:main')
...     p.set('app:main', property, value)
...     with open(os.path.join(config_dir, 'config', path), 'w') as f: p.write(f)
>>> write_ini('tool_shed.ini', 'database_connection', 'sqlite:///pg/testdb1')
>>> config = get_config(['manage_db.py', 'tool_shed'], cwd=config_dir)
>>> config['repo'].endswith('tool_shed/webapp/model/migrate')
True
>>> config['db_url']
'sqlite:///pg/testdb1'
>>> write_ini('galaxy.ini', 'data_dir', '/moo')
>>> config = get_config(['manage_db.py'], cwd=config_dir)
>>> uri_with_env = os.getenv("GALAXY_TEST_DBURI", "sqlite:////moo/universe.sqlite?isolation_level=IMMEDIATE")
>>> config['db_url'] == uri_with_env
True
>>> rmtree(config_dir)
galaxy.model.orm.scripts.manage_db()[source]

galaxy.model.orm.util module

galaxy.model.orm.util.add_object_to_object_session(object, object_with_session)[source]

Explicitly add object to the session. Addresses SQLAlchemy 2.0 compatibility issue: https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#cascade-backrefs-behavior-deprecated-for-removal-in-2-0

This function preserves SQLAlchemy’s pre-2.0 logic and should be used when:

  1. foo and bar are model instances, that are associated (via SQLAlchemy’s relationship), AND

  2. bar is assigned to foo’s bar relationship (e.g. foo.bar = bar), AND

  3. bar is in a session and foo is not, AND

  4. foo is implicitly added to bar’s session upon assignment(2), as indicated by a RemovedIn20Warning specifying that the ‘“foo” object is being merged into a Session along the backref cascade path…’

galaxy.model.orm.util.add_object_to_session(object, session)[source]

Explicitly add object to the session.

galaxy.model.orm.util.get_object_session(object)[source]