Check the that SQLAlchemy ResultProxy returns rows before fetching rows
- [X] closes #40205 
- [ ] tests added / passed
- [X] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [X] whatsnew entry
@jreback to be honest, I'm not totally sure how to go about writing a test for this. I can't think of a command in vanilla Postgres that returns nothing off the top of my head. Even an `INSERT` or `COPY` will return the number of rows (and it looks like `INSERT` is already being tested). `UNLOAD` is Redshift-specific. Any ideas on how to structure a test for this?

I'm also having trouble getting the existing tests to pass locally. I'm using the supplied Dockerfile to create my dev environment, with the only change I made being that I added `psycopg2` to the `environment.yml` so that I could actually connect to my Redshift db. 
![image](https://user-images.githubusercontent.com/29689587/110144948-27ba0180-7d96-11eb-987c-683986239b49.png)
 This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. Thanks for the PR but it appears as if this PR has gotten stale. Additionally, pd.`read_sql` is designed to read in data to a `DataFrame` and not designed to execute generic database transactions. So going to close as I think supporting this use case is out of scope.