示例#1
0
 def test_missing_tables(self):
     schema = test_schema + "_missing_tables"
     tdf_1 = TicDatFactory(this=[["Something"], ["Another"]])
     pdf_1 = PanDatFactory(**tdf_1.schema())
     tdf_2 = TicDatFactory(
         **dict(tdf_1.schema(), that=[["What", "Ever"], []]))
     pdf_2 = PanDatFactory(**tdf_2.schema())
     dat = tdf_1.TicDat(this=[["a", 2], ["b", 3], ["c", 5]])
     pan_dat = tdf_1.copy_to_pandas(dat, drop_pk_columns=False)
     tdf_1.pgsql.write_schema(self.engine, schema)
     tdf_1.pgsql.write_data(dat, self.engine, schema)
     pg_dat = tdf_2.pgsql.create_tic_dat(self.engine, schema)
     self.assertTrue(tdf_1._same_data(dat, pg_dat))
     pg_pan_dat = pdf_2.pgsql.create_pan_dat(self.engine, schema)
     self.assertTrue(pdf_1._same_data(pan_dat, pg_pan_dat))
示例#2
0
    def test_pgtd_active(self):
        if not self.can_run:
            return
        schema = test_schema + "_active"
        tdf = TicDatFactory(
            **{
                k: [pks, (["active_fld"] if k == "categories" else []) + dfs]
                for k, (pks, dfs) in diet_schema.schema().items()
            })
        tdf.pgsql.write_schema(self.engine,
                               schema,
                               include_ancillary_info=False,
                               forced_field_types={
                                   ('categories', 'active_fld'): 'boolean'
                               })
        tdf = diet_schema.clone()
        dat = tdf.copy_tic_dat(diet_dat)
        dat.categories["junk"] = {}
        tdf.pgsql.write_data(dat, self.engine, schema, active_fld="active_fld")
        self.assertTrue(
            set(_[0] for _ in self.engine.execute(
                f"Select active_fld from {schema}.categories")) == {True})
        self.engine.execute(
            f"Update {schema}.categories set active_fld = False where name = 'junk'"
        )
        dat_2 = tdf.pgsql.create_tic_dat(self.engine,
                                         schema,
                                         active_fld="active_fld")
        self.assertTrue(tdf._same_data(dat_2, diet_dat, epsilon=1e-10))

        pdf = PanDatFactory.create_from_full_schema(
            diet_schema.schema(include_ancillary_info=True))
        pan_dat = tdf.copy_to_pandas(diet_dat, drop_pk_columns=False)
        pan_dat_2 = pdf.pgsql.create_pan_dat(self.engine,
                                             schema,
                                             active_fld="active_fld")
        self.assertTrue(pdf._same_data(pan_dat, pan_dat_2, epsilon=1e-10))
        self.assertTrue(
            set(_[0] for _ in self.engine.execute(
                f"Select active_fld from {schema}.categories")) ==
            {True, False})
        pdf.pgsql.write_data(pan_dat,
                             self.engine,
                             schema,
                             active_fld="active_fld")
        self.assertTrue(
            set(_[0] for _ in self.engine.execute(
                f"Select active_fld from {schema}.categories")) == {True})