当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.read_sql用法及代码示例


用法:

pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)

将 SQL 查询或数据库表读入 DataFrame。

此函数是read_sql_tableread_sql_query 的便捷包装器(用于向后兼容)。它将根据提供的输入委托给特定的函数。 SQL 查询将被路由到 read_sql_query ,而数据库表名将被路由到 read_sql_table 。请注意,委托函数可能有更多关于此处未列出的函数的具体说明。

参数

sqlstr 或 SQLAlchemy 可选(选择或文本对象)

要执行的 SQL 查询或表名。

conSQLAlchemy 可连接、str 或 sqlite3 连接

使用 SQLAlchemy 可以使用该库支持的任何数据库。如果是 DBAPI2 对象,则仅支持 sqlite3。用户负责 SQLAlchemy 可连接的引擎处理和连接关闭; str 连接会自动关闭。看这里。

index_colstr 或 str 列表,可选,默认:无

要设置为索引(MultiIndex)的列。

coerce_float布尔值,默认为真

尝试将非字符串、非数字对象(如 decimal.Decimal)的值转换为浮点数,这对 SQL 结果集很有用。

params列表,元组或字典,可选,默认:无

要传递给执行方法的参数列表。用于传递参数的语法取决于数据库驱动程序。检查您的数据库驱动程序文档,了解 PEP 249 的 paramstyle 中说明的五种语法样式中的哪一种受支持。例如:对于 psycopg2,使用 %(name)s 所以使用 params={‘name’:‘value’}。

parse_dates列表或字典,默认:无
  • 要解析为日期的列名列表。

  • {column_name:format string} 的字典,其中格式字符串在解析字符串时间的情况下是 strftime 兼容的,或者在解析整数时间戳的情况下是 (D, s, ns, ms, us) 之一。

  • {column_name:arg dict} 的字典,其中 arg 字典对应于 pandas.to_datetime() 的关键字参数,特别适用于没有原生日期时间支持的数据库,例如 SQLite。

columns列表,默认:无

要从 SQL 表中选择的列名列表(仅在读取表时使用)。

chunksize整数,默认无

如果指定,则返回一个迭代器,其中 chunksize 是要包含在每个块中的行数。

返回

数据帧或迭代器[数据帧]

例子

通过 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('test_data', 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 参数将日期解析应用于列

>>> 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

parse_dates 参数在提供的列上调用 pd.to_datetime。用于在列上应用pd.to_datetime 的自定义参数值通过字典格式指定: 1. 在解析 “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
  1. 对 “date_column” 的值应用 dayfirst 日期解析顺序

>>> 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
  1. 日期解析“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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.read_sql。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。