Warning

This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

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)[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]