pandas.read_sql#
- pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None, dtype_backend=_NoDefault.no_default, dtype=None)[源代码]#
将 SQL 查询或数据库表读取到 DataFrame。
此函数是
read_sql_table和read_sql_query``(为了向后兼容)的便捷包装器。它将根据提供的输入委托给特定函数。SQL 查询将路由到 ``read_sql_query,而数据库表名将路由到read_sql_table。请注意,委托的函数可能在其功能上具有比此处列出的更具体的说明。- Parameters:
- sqlstr 或 SQLAlchemy Selectable (select 或 text object)
要执行的 SQL 查询或表名。
- conADBC Connection, SQLAlchemy connectable, str, 或 sqlite3 connection
ADBC 在可能的情况下提供具有本机类型支持的高性能 I/O。使用 SQLAlchemy 可以使用该库支持的任何数据库。如果为 DBAPI2 对象,则仅支持 sqlite3。用户负责 ADBC 连接和 SQLAlchemy connectable 的引擎处理和连接关闭;str 连接会自动关闭。请参阅 here 。
- index_colstr 或 str 列表,可选,默认:None
要设置为索引(多索引)的列。
- coerce_floatbool, default True
尝试将非字符串、非数字对象(如 decimal.Decimal)的值转换为浮点数,这对于 SQL 结果集非常有用。
- params列表、元组或字典,可选,默认:None
要传递给 execute 方法的参数列表。用于传递参数的语法取决于数据库驱动程序。检查您的数据库驱动程序文档,了解 PEP 249 的 paramstyle 描述的五种语法样式中哪一种受支持。例如,对于 psycopg2,使用 %(name)s,因此使用 params={‘name’ : ‘value’}。
- parse_dates列表或字典,默认:None
要解析为日期的列名的列表。
字典,格式为
{column_name: format string},其中 format string 在解析字符串时间时与 strftime 兼容,或者在解析整数时间戳时为 (D, s, ns, ms, us) 之一。字典,格式为
{column_name: arg dict},其中 arg dict 对应于pandas.to_datetime()的关键字参数。当使用不原生支持 Datetime 的数据库(如 SQLite)时尤其有用。
- columnslist,默认:None
要从 SQL 表中选择的列名的列表(仅在读取表时使用)。
- chunksizeint,默认 None
如果指定,则返回一个迭代器,其中 chunksize 是每个块中包含的行数。
- dtype_backend{‘numpy_nullable’, ‘pyarrow’}, 默认 ‘numpy_nullable’
应用于结果
DataFrame的后端数据类型(仍处于实验阶段)。行为如下:"numpy_nullable":返回支持可空 dtype 的DataFrame(默认)。"pyarrow":返回 pyarrow 支持的可空ArrowDtypeDataFrame。
在 2.0 版本加入.
- dtype类型名称或列字典
数据的类型或列的类型。例如,np.float64 或 {‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’}。如果传递了表而不是查询,则忽略该参数。
在 2.0.0 版本加入.
- Returns:
- DataFrame 或 Iterator[DataFrame]
参见
read_sql_table将 SQL 数据库表读入 DataFrame。
read_sql_query将 SQL 查询读入 DataFrame。
Examples
通过 SQL 查询或 SQL 表名从 SQL 读取数据。在使用 SQLite 数据库时,仅接受 SQL 查询,仅提供 SQL 表名将导致错误。
>>> 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(name='test_data', con=conn) 2
>>> 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')
通过
parse_dates参数应用日期解析到列。parse_dates参数将pd.to_datetime应用于提供的列。通过字典格式指定将pd.to_datetime应用于某列的自定义参数值:>>> 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
在 2.2.0 版本加入: Pandas 现在支持通过 ADBC 驱动程序读取
>>> from adbc_driver_postgresql import dbapi >>> with dbapi.connect('postgres:///db_name') as conn: ... pd.read_sql('SELECT int_column FROM test_data', conn) int_column 0 0 1 1