用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。