Unverified Commit aa9707b9 authored by Akke Viitanen's avatar Akke Viitanen
Browse files

add write database function

parent b581f7bf
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -489,3 +489,41 @@ class CatalogCombined:
            area_deg2=self.get_area(),
            nmin=nmin,
        )

    def write_database(
        self, name_table: str, filename_database: str, debug=False, blocksize=4096, *args, **kwargs
    ):
        """
        Write the combined catalog into a sqlite3 database table.

        Parameters
        ----------
        name_table: str
            name of the database table
        filename_database: str
            filename of the sqlite3 database

        """

        import sqlite3

        from astropy.table import Table

        if os.path.exists(filename_database):
            raise FileExistsError(f"Filename {filename_database} exists. Will not overwrite.")

        with sqlite3.connect(filename_database) as con:
            for fst in range(0, len(self.catalog_combined), blocksize):
                lst = fst + blocksize
                logger.info(f"ingesting {filename_database} {name_table} {fst} {lst} ...")
                df = Table(self.catalog_combined[fst:lst]).to_pandas()
                df = df.reset_index(drop=True)
                df.to_sql(
                    f"{name_table}",
                    con,
                    index=False,
                    if_exists="append",
                    chunksize=1024,
                    method="multi",
                )
        return df