pandas.read_sql # 熊猫。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该函数是and 的 便捷包装read_sql_query(为了向后兼容)。它将根据提供的输入委托给特定的函数。 SQL 查询将被路由到read_sql_query,而数据库表名称将被路由到read_sql_table。请注意,委托函数可能有关于其功能的更具体的注释,此处未列出。 参数: sql str 或 SQLAlchemy Selectable(选择或文本对象)要执行的 SQL 查询或表名。 con ADBC 连接、SQLAlchemy 可连接、str 或 sqlite3 连接ADBC 提供具有本机类型支持(如果可用)的高性能 I/O。使用 SQLAlchemy 可以使用该库支持的任何数据库。如果是 DBAPI2 对象,则仅支持 sqlite3。用户负责 ADBC 连接和 SQLAlchemy 连接的引擎处置和连接关闭; str 连接会自动关闭。看 这里。 index_col str 或 str 列表,可选,默认值:无设置为索引的列(MultiIndex)。 coerce_float bool, 默认 True尝试将非字符串、非数字对象(如decimal.Decimal)的值转换为浮点型,这对于 SQL 结果集很有用。 参数列表、元组或字典,可选,默认值:无要传递给执行方法的参数列表。用于传递参数的语法取决于数据库驱动程序。检查数据库驱动程序文档,了解支持 PEP 249 的 paramstyle 中描述的五种语法样式中的哪一种。例如。对于 psycopg2,使用 %(name)s 因此使用 params={'name' : 'value'}。 parse_dates列表或字典,默认值:无 要解析为日期的列名称列表。 格式字符串的字典在解析字符串时间的情况下与 strftime 兼容,或者在解析整数时间戳的情况下是 (D, s, ns, ms, us) 之一。{column_name: format string} Dict of ,其中 arg dict 对应于关键字参数 对于没有本机日期时间支持的数据库(例如 SQLite)特别有用。{column_name: arg dict}pandas.to_datetime() 列列表,默认:无从 SQL 表中选择的列名列表(仅在读取表时使用)。 chunksize int,默认无如果指定,则返回一个迭代器,其中chunksize是每个块中包含的行数。 dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'应用于结果的后端数据类型DataFrame (仍处于试验阶段)。行为如下: "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。 "pyarrow":返回 pyarrow 支持的可为空的ArrowDtype DataFrame。 2.0版本中的新增内容。 dtype类型名称或列的字典数据或列的数据类型。例如 np.float64 或 {'a': np.float64, 'b': np.int32, 'c': 'Int64'}。如果传递的是表而不是查询,则忽略该参数。 2.0.0 版本中的新增内容。 返回: 数据帧或迭代器[数据帧] 也可以看看 read_sql_table将 SQL 数据库表读入 DataFrame。 read_sql_query将 SQL 查询读入 DataFrame。 例子 通过 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