pandas.read_sql
- pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)[source]
-
Read SQL query or database table into a DataFrame.
This function is a convenience wrapper around
read_sql_table
andread_sql_query
(for backward compatibility). It will delegate to the specific function depending on the provided input. A SQL query will be routed toread_sql_query
, while a database table name will be routed toread_sql_table
. Note that the delegated function might have more specific notes about their functionality not listed here.- Parameters
-
- sql:str or SQLAlchemy Selectable (select or text object)
-
SQL query to be executed or a table name.
- con:SQLAlchemy connectable, str, or sqlite3 connection
-
Using SQLAlchemy makes it possible to use any DB supported by that library. If a DBAPI2 object, only sqlite3 is supported. The user is responsible for engine disposal and connection closure for the SQLAlchemy connectable; str connections are closed automatically. See here.
- index_col:str or list of str, optional, default: None
-
Column(s) to set as index(MultiIndex).
- coerce_float:bool, default True
-
Attempts to convert values of non-string, non-numeric objects (like decimal.Decimal) to floating point, useful for SQL result sets.
- params:list, tuple or dict, optional, default: None
-
List of parameters to pass to execute method. The syntax used to pass parameters is database driver dependent. Check your database driver documentation for which of the five syntax styles, described in PEP 249’s paramstyle, is supported. Eg. for psycopg2, uses %(name)s so use params={‘name’ : ‘value’}.
- parse_dates:list or dict, default: None
-
List of column names to parse as dates.
Dict of
{column_name: format string}
where format string is strftime compatible in case of parsing string times, or is one of (D, s, ns, ms, us) in case of parsing integer timestamps.Dict of
{column_name: arg dict}
, where the arg dict corresponds to the keyword arguments ofpandas.to_datetime()
Especially useful with databases without native Datetime support, such as SQLite.
- columns:list, default: None
-
List of column names to select from SQL table (only used when reading a table).
- chunksize:int, default None
-
If specified, return an iterator where chunksize is the number of rows to include in each chunk.
- Returns
-
- DataFrame or Iterator[DataFrame]
See also
read_sql_table
-
Read SQL database table into a DataFrame.
read_sql_query
-
Read SQL query into a DataFrame.
Examples
Read data from SQL via either a SQL query or a SQL tablename. When using a SQLite database only SQL queries are accepted, providing only the SQL tablename will result in an error.
>>> from sqlite3 import connect >>> conn = connect(':memory:') >>> df = pd.DataFrame(data=[[0, '10/11/12'], [1, '12/11/10']], ... columns=['int_column', 'date_column']) >>> df.to_sql('test_data', conn)
>>> pd.read_sql('SELECT int_column, date_column FROM test_data', conn) int_column date_column 0 0 10/11/12 1 1 12/11/10
>>> pd.read_sql('test_data', 'postgres:///db_name')
Apply date parsing to columns through the
parse_dates
argument>>> pd.read_sql('SELECT int_column, date_column FROM test_data', ... conn, ... parse_dates=["date_column"]) int_column date_column 0 0 2012-10-11 1 1 2010-12-11
The
parse_dates
argument callspd.to_datetime
on the provided columns. Custom argument values for applyingpd.to_datetime
on a column are specified via a dictionary format: 1. Ignore errors while parsing the values of “date_column”>>> pd.read_sql('SELECT int_column, date_column FROM test_data', ... conn, ... parse_dates={"date_column": {"errors": "ignore"}}) int_column date_column 0 0 2012-10-11 1 1 2010-12-11
Apply a dayfirst date parsing order on the values of “date_column”
>>> pd.read_sql('SELECT int_column, date_column FROM test_data', ... conn, ... parse_dates={"date_column": {"dayfirst": True}}) int_column date_column 0 0 2012-11-10 1 1 2010-11-12
Apply custom formatting when date parsing the values of “date_column”
>>> pd.read_sql('SELECT int_column, date_column FROM test_data', ... conn, ... parse_dates={"date_column": {"format": "%d/%m/%y"}}) int_column date_column 0 0 2012-11-10 1 1 2010-11-12
© 2008–2021, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.3.4/reference/api/pandas.read_sql.html