Beispiel #1
0
    def _create_tables(self, metadata=None, use_autoincrement=True, session_id_start=1000):
        """Create all the relevant tables.

        Parameters
        ----------
        metadata : sqlalchemy.MetaData
            The instance for holding the relevant tables.
        use_autoincrement: bool
            A flag to set auto increment behavior on the Session table.
        session_id_start : int
            A new starting session Id for counting new simulations.
        """
        if metadata is None:
            metadata = self.metadata
        self.session = tables.create_session(metadata, use_autoincrement, session_id_start)
        self.field = tables.create_field(metadata)
        self.target_history = tables.create_target_history(metadata)
        self.observation_history = tables.create_observation_history(metadata)
        self.slew_history = tables.create_slew_history(metadata)
        self.slew_initial_state = tables.create_slew_initial_state(metadata)
        self.slew_final_state = tables.create_slew_final_state(metadata)
        self.slew_activities = tables.create_slew_activities(metadata)
        self.slew_maxspeeds = tables.create_slew_maxspeeds(metadata)
        self.target_exposures = tables.create_target_exposures(metadata)
        self.observation_exposures = tables.create_observation_exposures(metadata)
        self.scheduled_downtime = tables.create_scheduled_downtime(metadata)
        self.unscheduled_downtime = tables.create_unscheduled_downtime(metadata)
        self.proposal = tables.create_proposal(metadata)
        self.observation_proposal_history = tables.create_observation_proposal_history(metadata)
        self.target_proposal_history = tables.create_target_proposal_history(metadata)
        self.config = tables.create_config(metadata)
        # self.seeing = tables.create_seeing(metadata)
        # self.cloud = tables.create_cloud(metadata)
        self.summary_all_props = tables.create_summary_all_props(metadata, self.observation_history,
                                                                 self.slew_history, self.slew_initial_state,
                                                                 self.proposal,
                                                                 self.observation_proposal_history,
                                                                 self.field)
Beispiel #2
0
    def __init__(self, dialect="mysql", mysql_config_path=None, sqlite_save_path=None, session_id_start=None):
        """Initialize the class.

        Parameters
        ----------
        dialect : str
            The flavor of the database to use. Options: mysql or sqlite.
        mysql_config_path : str
            An alternate path for the .my.cnf configuration file for MySQL.
        sqlite_save_path : str
            A path to save all resulting database files for SQLite.
        session_id_start : int
            A new starting session Id for counting new simulations.
        """
        self.db_name = "SocsDB"
        self.log = logging.getLogger("database.SocsDatabase")
        self.db_dialect = dialect
        self.session_id = -1
        self.session_start = session_id_start if session_id_start is not None else 1000
        self.metadata = MetaData()
        self.engine = None
        self.mysql_config_path = mysql_config_path
        self.sqlite_save_path = sqlite_save_path

        # Parameters for SQLite operations
        self.session_engine = None
        self.session_metadata = MetaData()

        if self.db_dialect == "mysql":
            self._create_tables(session_id_start=self.session_start)
            self.engine = self._make_engine()
        if self.db_dialect == "sqlite":
            self.session_tracking = tables.create_session(self.metadata, autoincrement=False)
            sqlite_session_tracking_db = "{}_sessions.db".format(get_hostname())
            self.engine = self._make_engine(sqlite_session_tracking_db)

        # Parameter for holding data lists
        self.data_list = collections.defaultdict(list)