LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Public Attributes | List of all members
lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema Class Reference
Inheritance diagram for lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema:
lsst.dax.apdb.apdbSchema.ApdbSchema

Public Member Functions

def __init__ (self, sqlalchemy.engine.Engine engine, str dia_object_index, str htm_index_column, str schema_file, Optional[str] extra_schema_file=None, str prefix="")
 
None makeSchema (self, bool drop=False, str mysql_engine='InnoDB')
 

Public Attributes

 objects
 
 objects_last
 
 sources
 
 forcedSources
 
 tableSchemas
 

Detailed Description

Class for management of APDB schema.

Attributes
----------
objects : `sqlalchemy.Table`
    DiaObject table instance
objects_last : `sqlalchemy.Table`
    DiaObjectLast table instance, may be None
sources : `sqlalchemy.Table`
    DiaSource table instance
forcedSources : `sqlalchemy.Table`
    DiaForcedSource table instance

Parameters
----------
engine : `sqlalchemy.engine.Engine`
    SQLAlchemy engine instance
dia_object_index : `str`
    Indexing mode for DiaObject table, see `ApdbSqlConfig.dia_object_index`
    for details.
htm_index_column : `str`
    Name of a HTM index column for DiaObject and DiaSource tables.
schema_file : `str`
    Name of the YAML schema file.
extra_schema_file : `str`, optional
    Name of the YAML schema file with extra column definitions.
prefix : `str`, optional
    Prefix to add to all scheam elements.

Definition at line 42 of file apdbSqlSchema.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.__init__ (   self,
sqlalchemy.engine.Engine  engine,
str  dia_object_index,
str  htm_index_column,
str  schema_file,
Optional[str]   extra_schema_file = None,
str   prefix = "" 
)

Definition at line 72 of file apdbSqlSchema.py.

73  schema_file: str, extra_schema_file: Optional[str] = None, prefix: str = ""):
74 
75  super().__init__(schema_file, extra_schema_file)
76 
77  self._engine = engine
78  self._dia_object_index = dia_object_index
79  self._prefix = prefix
80 
81  self._metadata = MetaData(self._engine)
82 
83  # map YAML column types to SQLAlchemy
84  self._type_map = dict(DOUBLE=self._getDoubleType(engine),
85  FLOAT=sqlalchemy.types.Float,
86  DATETIME=sqlalchemy.types.TIMESTAMP,
87  BIGINT=sqlalchemy.types.BigInteger,
88  INTEGER=sqlalchemy.types.Integer,
89  INT=sqlalchemy.types.Integer,
90  TINYINT=sqlalchemy.types.Integer,
91  BLOB=sqlalchemy.types.LargeBinary,
92  CHAR=sqlalchemy.types.CHAR,
93  BOOL=sqlalchemy.types.Boolean)
94 
95  # Adjust index if needed
96  if self._dia_object_index == 'pix_id_iov':
97  objects = self.tableSchemas[ApdbTables.DiaObject]
98  objects.primary_key.columns.insert(0, htm_index_column)
99 
100  # Add pixelId column and index to tables that need it
101  for table in (ApdbTables.DiaObject, ApdbTables.DiaObjectLast, ApdbTables.DiaSource):
102  tableDef = self.tableSchemas.get(table)
103  if not tableDef:
104  continue
105  column = ColumnDef(name="pixelId",
106  type="BIGINT",
107  nullable=False,
108  default=None,
109  description="",
110  unit="",
111  ucd="")
112  tableDef.columns.append(column)
113 
114  if table is ApdbTables.DiaObjectLast:
115  # use it as a leading PK column
116  tableDef.primary_key.columns.insert(0, "pixelId")
117  else:
118  # make a regular index
119  index = IndexDef(name=f"IDX_{tableDef.name}_pixelId",
120  type=IndexType.INDEX, columns=["pixelId"])
121  tableDef.indices.append(index)
122 
123  # generate schema for all tables, must be called last
124  self._tables = self._makeTables()
125 
126  self.objects = self._tables[ApdbTables.DiaObject]
127  self.objects_last = self._tables.get(ApdbTables.DiaObjectLast)
128  self.sources = self._tables[ApdbTables.DiaSource]
129  self.forcedSources = self._tables[ApdbTables.DiaForcedSource]
130 

Member Function Documentation

◆ makeSchema()

None lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.makeSchema (   self,
bool   drop = False,
str   mysql_engine = 'InnoDB' 
)
Create or re-create all tables.

Parameters
----------
drop : `bool`, optional
    If True then drop tables before creating new ones.
mysql_engine : `str`, optional
    MySQL engine type to use for new tables.

Definition at line 160 of file apdbSqlSchema.py.

160  def makeSchema(self, drop: bool = False, mysql_engine: str = 'InnoDB') -> None:
161  """Create or re-create all tables.
162 
163  Parameters
164  ----------
165  drop : `bool`, optional
166  If True then drop tables before creating new ones.
167  mysql_engine : `str`, optional
168  MySQL engine type to use for new tables.
169  """
170 
171  # re-make table schema for all needed tables with possibly different options
172  _LOG.debug("clear metadata")
173  self._metadata.clear()
174  _LOG.debug("re-do schema mysql_engine=%r", mysql_engine)
175  self._makeTables(mysql_engine=mysql_engine)
176 
177  # create all tables (optionally drop first)
178  if drop:
179  _LOG.info('dropping all tables')
180  self._metadata.drop_all()
181  _LOG.info('creating all tables')
182  self._metadata.create_all()
183 

Member Data Documentation

◆ forcedSources

lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.forcedSources

Definition at line 129 of file apdbSqlSchema.py.

◆ objects

lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.objects

Definition at line 126 of file apdbSqlSchema.py.

◆ objects_last

lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.objects_last

Definition at line 127 of file apdbSqlSchema.py.

◆ sources

lsst.dax.apdb.apdbSqlSchema.ApdbSqlSchema.sources

Definition at line 128 of file apdbSqlSchema.py.

◆ tableSchemas

lsst.dax.apdb.apdbSchema.ApdbSchema.tableSchemas
inherited

Definition at line 178 of file apdbSchema.py.


The documentation for this class was generated from the following file: