update_from_dataframe¶
- async AsyncDataTableOracle.update_from_dataframe(source, chucksize=None)¶
使用
DataFrame
更新数据表重要
DataFrame
source
必须包含where
列, 其列类型可以为字符串,也可以是pypika的条件语句。 该列指明每行数据对应的更新条件。为了防止条件缺失而进行了全表更新, 该列所有数据不允许为空。如果有部分行不想进行所有字段的更新,可在对应单元格内填充Skip值。
示例
from deepfos.element.datatable import Skip df = pd.DataFrame(data=[ [1, 'Foo', 'Foo@x.com'], [2, 'Bar', 'bar@x.com'], [3, 'Jack', Skip] ], columns=['id', 'name', 'email']) df['where'] = pd.Series(f"id='{i + 1}'" for i in range(3)) tbl = DataTableMySQL("example") tbl.update_from_dataframe(df)
将执行以下SQL:
UPDATE `example` SET `id`=1,`name`='Foo',`email`='Foo@x.com' WHERE id = 1; UPDATE `example` SET `id`=2,`name`='Bar',`email`='bar@x.com' WHERE id = 2; UPDATE `example` SET `id`=3,`name`='Jack' -- email字段值为Skip,因此不更新 WHERE id = 3;