用法:
dask.dataframe.to_sql(df, name: str, uri: str, schema=None, if_exists: str = 'fail', index: bool = True, index_label=None, chunksize=None, dtype=None, method=None, compute=True, parallel=False, engine_kwargs=None)
将 Dask Dataframe 存储到 SQL 表
根据“meta”DataFrame(并符合调用者的“if_exists”首选项)创建一个空表,然后每个块调用pd DataFrameto_sql(带有
if_exists=”append”
)。支持 SQLAlchemy [1] 支持的数据库。可以新创建、附加或覆盖表。
- name:str
SQL 表的名称。
- uri:string
数据库连接的完整 sqlalchemy URI
- schema:str,可选
指定架构(如果数据库风格支持此)。如果没有,使用默认模式。
- if_exists:{‘fail’, ‘replace’, ‘append’},默认 ‘fail’
如果表已经存在,如何表现。
- 失败:引发ValueError
- 替换:在插入新值之前删除表。
- append:向现有表中插入新值。
- index:布尔值,默认为真
将DataFrame 索引写为一列。使用
index_label
作为表中的列名。- index_label:str 或序列,默认无
索引列的列标签。如果给出 None(默认)并且
index
为 True,则使用索引名称。如果DataFrame 使用MultiIndex,则应给出一个序列- chunksize:int 可选
指定每次要写入的每批中的行数。默认情况下,将一次写入所有行。
- dtype:dict或标量,可选
指定列的数据类型。如果使用字典,键应该是列名,值应该是 SQLAlchemy 类型或 sqlite3 旧模式的字符串。如果提供了标量,它将应用于所有列。
- method:{无,‘multi’,可调用},可选
控制使用的 SQL 插入子句:
- 无:使用标准 SQL
INSERT
子句(每行一个)。 - ‘multi’:在单个
INSERT
子句中传递多个值。 - 可使用签名
(pd_table, conn, keys, data_iter)
调用。
详细信息和示例可调用实现可以在部分插入方法中找到。
- 无:使用标准 SQL
- compute:布尔值,默认为真
如果为真,则调用dask.compute 并执行加载到 SQL 中;否则,返回 Dask 对象(或当 parallel=True 时的 per-block 对象数组)
- parallel:布尔值,默认为 False
如果为 true,则让每个块同时将自身附加到 DB 表中。这可能导致 DB 行的顺序与源 DataFrame 的相应行不同。为 false 时,将每个块按顺序加载到 SQL DB 中。
- engine_kwargs:dict 或 None
sqlalchemy 的特定数据库引擎参数
- ValueError
当表已存在且
if_exists
为‘fail’(默认值)时。
参数:
抛出:
注意:
如果数据库支持,时区感知日期时间列将使用 SQLAlchemy 编写为
Timestamp with timezone
类型。否则,日期时间将存储为原始时区本地的时区未知时间戳。参考:
例子:
从头开始创建一个有 4 行的表。
>>> import pandas as pd >>> df = pd.DataFrame([ {'i':i, 's':str(i)*2 } for i in range(4) ]) >>> from dask.dataframe import from_pandas >>> ddf = from_pandas(df, npartitions=2) >>> ddf Dask DataFrame Structure: i s npartitions=2 0 int64 object 2 ... ... 3 ... ... Dask Name: from_pandas, 2 tasks
>>> from dask.utils import tmpfile >>> from sqlalchemy import create_engine >>> with tmpfile() as f: ... db = 'sqlite:///%s' %f ... ddf.to_sql('test', db) ... engine = create_engine(db, echo=False) ... result = engine.execute("SELECT * FROM test").fetchall() >>> result [(0, 0, '00'), (1, 1, '11'), (2, 2, '22'), (3, 3, '33')]
相关用法
- Python dask.dataframe.to_records用法及代码示例
- Python dask.dataframe.to_datetime用法及代码示例
- Python dask.dataframe.to_hdf用法及代码示例
- Python dask.dataframe.to_parquet用法及代码示例
- Python dask.dataframe.to_numeric用法及代码示例
- Python dask.dataframe.to_csv用法及代码示例
- Python dask.dataframe.tseries.resample.Resampler.agg用法及代码示例
- Python dask.dataframe.tseries.resample.Resampler.mean用法及代码示例
- Python dask.dataframe.Series.apply用法及代码示例
- Python dask.dataframe.DataFrame.applymap用法及代码示例
- Python dask.dataframe.Series.clip用法及代码示例
- Python dask.dataframe.Series.prod用法及代码示例
- Python dask.dataframe.Series.fillna用法及代码示例
- Python dask.dataframe.DataFrame.sub用法及代码示例
- Python dask.dataframe.compute用法及代码示例
- Python dask.dataframe.DataFrame.mod用法及代码示例
- Python dask.dataframe.Series.to_frame用法及代码示例
- Python dask.dataframe.read_table用法及代码示例
- Python dask.dataframe.read_hdf用法及代码示例
- Python dask.dataframe.Series.sum用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.dataframe.to_sql。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。