TST: Run tests using a database explicitly
At the moment, our tests accessing a database (in `pandas/tests/io/test_sql.py`) are being skipped if the module to connect to the database are not installed (e.g. `pymysql` or `psycopg2`), or if the connection to the database doesn't succeed.

This has two implications:
- It's not easy in the CI to know which builds are running the db tests (we need to check for the dependencies, and also check if a db server is set up in the host)
- If there is an issue with the db, the tests will be skipped silently (we'll log that they are skipped, but I guess nobody will notice)

I think a better approach would be:
- Mark those tests in the cateogry `db` (i.e. `@pytest.mark.db`)
- Remove the skips for when the the connection fails (and possibly the one for when the db modules are not installed)
- In the CI add `-m "not db"` or `-m "db"` depending on whether we want to run the tests or not (this will be done with the env `PATTERNS` when #23924 is merged)

@jreback is this ok?