示例#1
0
    def _test_exists(self, df, index):
        assume_not_all_delims_and_quotechars(df)
        # first populate the data
        to_sql(
            df=df,
            table_name=self.table_name,
            creds=self.sql_creds,
            index=index,
            sql_type=self.sql_type,
            if_exists="replace",
        )

        # then test to sql with option of 'append'
        to_sql(
            df=df,
            table_name=self.table_name,
            creds=self.sql_creds,
            index=index,
            sql_type=self.sql_type,
            if_exists="append",
        )
        actual = pd.read_sql_query(
            sql=f"SELECT * FROM dbo.{self.table_name}", con=self.pyodbc_creds
        )
        df = prep_df_for_comparison(df=df, index=index)
        expected = pd.concat([df, df], axis=0, ignore_index=True)  # appended
        assert_frame_equal(expected, actual, check_column_type="equiv")
示例#2
0
 def _check_result(self, df_modified):
     # check result
     actual = pd.read_sql_query(
         sql=f"SELECT * FROM {self.schema_name}.{self.table_name}", con=self.sql_creds.engine
     )
     expected = prep_df_for_comparison(
         df=pd.concat([self.df, df_modified], axis=0, ignore_index=True, sort=False), index=False
     )
     assert_frame_equal(expected, actual)
示例#3
0
 def _test_base(self, df, index):
     assume_not_all_delims_and_quotechars(df)
     to_sql(
         df=df,
         table_name=self.table_name,
         creds=self.sql_creds,
         index=index,
         sql_type=self.sql_type,
         if_exists="replace",
     )
     actual = pd.read_sql_query(sql=f"SELECT * FROM {self.table_name}", con=self.pyodbc_creds)
     expected = prep_df_for_comparison(df=df, index=index)
     assert_frame_equal(expected, actual, check_column_type="equiv")
示例#4
0
 def _test_not_exists(self, df, index):
     execute_sql_statement(
         self.pyodbc_creds.engine, f"DROP TABLE IF EXISTS dbo.{self.table_name}"
     )
     assume_not_all_delims_and_quotechars(df)
     to_sql(
         df=df,
         table_name=self.table_name,
         creds=self.sql_creds,
         index=index,
         sql_type=self.sql_type,
         if_exists="fail",
     )
     actual = pd.read_sql_query(sql=f"SELECT * FROM {self.table_name}", con=self.pyodbc_creds)
     expected = prep_df_for_comparison(df=df, index=index)
     assert_frame_equal(expected, actual, check_column_type="equiv")
示例#5
0
def test_tosql_nan_null_inf(df, sql_creds):
    tbl_name = "tbl_df_nan_null_last_col"
    schema_name = "dbo"
    execute_sql_statement(sql_creds.engine, f"DROP TABLE IF EXISTS {schema_name}.{tbl_name}")
    to_sql(
        df=df,
        table_name=tbl_name,
        creds=sql_creds,
        schema=schema_name,
        if_exists="replace",
        index=False,
    )

    # check result
    actual = pd.read_sql_query(sql=f"SELECT * FROM {schema_name}.{tbl_name}", con=sql_creds.engine)
    expected = prep_df_for_comparison(df=df, index=False)
    assert_frame_equal(expected, actual)
示例#6
0
def test_tosql_full_bcp_path(bcp_path, sql_creds):
    df = pd.DataFrame({"col1": ["a", "b", "c", "d"], "col2": [1.5, 2.5, 3.5, 4.5]})
    tbl_name = "tbl_df_full_bcp_path"
    schema_name = "dbo"
    execute_sql_statement(sql_creds.engine, f"DROP TABLE IF EXISTS {schema_name}.{tbl_name}")
    to_sql(
        df=df,
        table_name=tbl_name,
        creds=sql_creds,
        schema=schema_name,
        if_exists="replace",
        index=False,
        bcp_path=bcp_path,
    )

    # check result
    actual = pd.read_sql_query(sql=f"SELECT * FROM {schema_name}.{tbl_name}", con=sql_creds.engine)
    expected = prep_df_for_comparison(df=df, index=False)
    assert_frame_equal(expected, actual)