read_sql_query converts integer column to float
#### Code Sample, a copy-pastable example if possible

```python
dataframe = pd.read_sql(self.get_query(order_numbers), session.bind, coerce_float=False)
dataframe = dataframe.astype(self.get_column_types())

```
get_query returns an `sqlalchemy.text("select ... ")`
get_column_types returns a dictionary `{... 'item_code': "int", ... }`

#### Problem description

I am querying sqlite database, and one of the columns contains only integer (no null).  Creating a dataframe, by running `pd.read_sql` returns the column as float.

When I try converting it back to integer, I get "ValueError: Cannot convert non-finite values (NA or inf) to integer", but the data are all integer.

I have pickled the array that is passed to `np.isfinite(arr).all()`: [arr.txt](https://github.com/pandas-dev/pandas/files/1670219/arr.txt)

<Traceback>

```

Traceback (most recent call last):
  File "./rawdb.py", line 94, in <module>
    sys.exit(main())                                                            
  File "./rawdb.py", line 77, in main
    df = obj.get_data(sample_list)
  File "./rawdb.py", line 62, in get_data
    dataframe = dataframe.astype(self.get_column_types())
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/util/_decorators.py", line 118, in wrapper
    return func(*args, **kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/generic.py", line 3997, in astype
    results.append(col.astype(dtype[col_name], copy=copy))
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/util/_decorators.py", line 118, in wrapper
    return func(*args, **kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/generic.py", line 4004, in astype
    **kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/internals.py", line 3462, in astype
    return self.apply('astype', dtype=dtype, **kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/internals.py", line 3329, in apply
    applied = getattr(b, f)(**kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/internals.py", line 544, in astype
    **kwargs)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/internals.py", line 625, in _astype
    values = astype_nansafe(values.ravel(), dtype, copy=True)
  File "/home/lou/.virtualenvs/orderparser/local/lib/python2.7/site-packages/pandas/core/dtypes/cast.py", line 687, in astype_nansafe
    raise ValueError('Cannot convert non-finite values (NA or inf) to '
ValueError: Cannot convert non-finite values (NA or inf) to integer

```
</Traceback>

#### Expected Output
dataframe["item_code"].dtype == integer



#### Output of ``pd.show_versions()``

<details>

[paste the output of ``pd.show_versions()`` here below this line]
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.12.final.0
python-bits: 64
OS: Linux
OS-release: 4.10.0-42-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_PH.UTF-8
LOCALE: None.None

pandas: 0.22.0
pytest: None
pip: 9.0.1
setuptools: 38.2.5
Cython: None
numpy: 1.14.0
scipy: None
pyarrow: None
xarray: None
IPython: 5.5.0
sphinx: None
patsy: None
dateutil: 2.6.1
pytz: 2017.2
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 2.1.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: 1.1.13
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
