6. SQL

  1. read_sql_table从指定数据表中,提取你所需要的列。

    1. pandas.read_sql_table(table_name, con, schema=None, index_col=None,
    2. coerce_float=True, parse_dates=None, columns=None, chunksize=None)
    • table_name:一个字符串,指定了数据库的表名

    • con:一个SQLAlchemy conectable或者一个database string URI,指定了连接对象它就是SQLAlchemy中的Engine对象。

    • schema:一个字符串,给出了SQL schema(在mysql中就是database

    • index_col:一个字符串或者字符串列表,指定哪一列或者哪些列作为index

    • coerce_float:一个布尔值,如果为True,则试图转换结果到数值类型

    • parse_dates:一个列表或者字典。指定如何解析日期:

      • 列名的列表:这些列将被解析为日期
      • 字典{col_name:format_str}:给出了那些列被解析为日期,以及解析字符串
      • 字典{col_name:arg dict}:给出了哪些列被解析为日期,arg dict将传递给pandas.to_datetime()函数来解析日期
    • columns:一个列表,给出了将从sql中提取哪些列

    • chunksize:一个整数。如果给出了,则函数返回的是一个迭代器,每次迭代时,返回chunksize行的数据。

  2. read_sql_query可以选择select query语句。因此你可以执行多表联合查询。

    1. pandas.read_sql_query(sql, con, index_col=None, coerce_float=True,
    2. params=None, parse_dates=None, chunksize=None)
    • sql:一个SQL查询字符串,或者SQLAlchemy Selectable对象。
    • params:一个列表,元组或者字典。用于传递给sql查询语句。比如:sqluses %(name)s...,因此params{'name':'xxxx'}
    • 其他参数见read_sql_table

    read_sql

  3. read_sql是前两者的一个包装,它可以根据sql参数,自由地选择使用哪个方式。

    1. pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None,
    2. parse_dates=None, columns=None, chunksize=None)
    • sql:一个数据表名,或者查询字符串,或者SQLAlchemy Selectable对象。如果为表名,则使用read_sql_table;如果为后两者,则使用read_sql_query
  4. pandas对象的.to_sql()方法用于插入数据库。

    1. Series/DataFrame.to_sql(name, con, flavor=None, schema=None, if_exists='fail',
    2. index=True, index_label=None, chunksize=None, dtype=None)
    • name:一个字符串,指定表名
    • con:一个SQLAlchemy conectable或者一个database string URI,指定了连接对象。它就是SQLAlchemy中的Engine对象。
    • flavor:被废弃的参数
    • schema:一个字符串,指定了SQL schema
    • if_exists:一个字符串,指定当数据表已存在时如何。可以为:
    • 'fail':什么都不做(即不存储数据)
    • 'replace':删除数据表,创建新表,然后插入数据
    • 'append':如果数据表不存在则创建数据表然后插入数据。入股数据表已存在,则追加数据
    • index:一个布尔值。如果为True,则将index作为一列数据插入数据库
    • index_labelindex的存储名。如果index=True,且index_label=None,则使用index.name
    • chunksize:一个整数。 如果为None,则一次写入所有的记录。如果非空,则一次写入chunksize大小的记录
    • dtype:一个字典。给出了各列的存储类型。

    to_sql