Coverage for python/lsst/daf/butler/registries/postgresqlRegistry.py : 74%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# This file is part of daf_butler. # # Developed for the LSST Data Management System. # This product includes software developed by the LSST Project # (http://www.lsst.org). # See the COPYRIGHT file at the top-level directory of this distribution # for details of code ownership. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Registry backed by an PostgreSQL Amazon RDS service.
Parameters ---------- config : `SqlRegistryConfig` or `str` Load configuration """
"""Set any filesystem-dependent config options for this Registry to be appropriate for a new empty repository with the given root.
Parameters ---------- root : `str` Filesystem path to the root of the data repository. config : `Config` A Butler-level config object to update (but not a `ButlerConfig`, to avoid included expanded defaults). full : `ButlerConfig` A complete Butler config with all defaults expanded; repository-specific options that should not be obtained from defaults when Butler instances are constructed should be copied from ``full`` to ``config``. overwrite : `bool`, optional If `False`, do not modify a value in ``config`` if the value already exists. Default is always to overwrite with the provided ``root``.
Notes ----- If a keyword is explicitly defined in the supplied ``config`` it will not be overridden by this method if ``overwrite`` is `False`. This allows explicit values set in external configs to be retained. """ super().setConfigRoot(root, config, full, overwrite=overwrite) Config.updateParameters(RegistryConfig, config, full, toCopy=("db",), overwrite=overwrite)
butlerRoot=None): registryConfig = SqlRegistryConfig(registryConfig) self.schemaConfig = schemaConfig super().__init__(registryConfig, schemaConfig, dimensionConfig, create, butlerRoot=butlerRoot)
return create_engine(self.config.connectionString, pool_size=1)
# Docstring inherited from SqlRegistry._makeInsertWithConflict. return self._makeInsertWithConflictImpl(table, onConflict)
def _makeInsertWithConflictImpl(table, onConflict): """Implementation for `_makeInsertWithConflict`.
This is done as a separate static method to facilitate testing. """ # This uses special support for UPSERT in PostgreSQL backend: # https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#insert-on-conflict-upsert # in SET clause assign all columns using special `excluded` # pseudo-table, if some column in a table does not appear in # INSERT list this will set it to NULL. for column in table.columns if column.name not in table.primary_key} else: raise ValueError(f"Unexpected `onConflict` value: {onConflict}") |