I'm not 100% sure but shouldn't the drop table command be
log.info(f"Dropping Table: mygrc.{table_name}")
dynamic_class.__table__.drop(dbEngine, checkfirst=True)
I think you're forgetting the dot just after dynamic_class
.
Also maybe instead of dropping the table, you can use the constructor with the extend_existing parameter set to true?