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.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.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:
foo and bar are model instances, that are associated (via SQLAlchemy’s relationship), AND
bar is assigned to foo’s bar relationship (e.g. foo.bar = bar), AND
bar is in a session and foo is not, AND
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…’