Mypy fix/io sql
- [ ] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

As part of this PR, did the following:

* Variable typing.
* Code cleanup and reformatting the imports.
* Internal class `_TestSQLAlchemyConn` behaves like an abstract class.
* To solve **variable name clashing** between parent classes in some of the errors, I restructured the inheritance from a structure like 

  > (_TestSQLAlchemy, _TestDBSQLAlchemy) --> TestDBSQLAlchemy

  to

  > _TestSQLAlchemy --> _TestDBSQLAlchemy --> TestDBSQLAlchemy

  Not sure why it was like that unless I'm missing something?
I will be creating and linking a new PR because I think I botched my forked repo branch. Will link the two PRs once I create the new one with the changes @simonjayhawkins suggested. @simonjayhawkins made the changes you suggested. Let me know if that works.