<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g" -->

---
title: New features in the Python deltalake 0.12.0 release
description: The Python deltalake 0.12.0 release adds MERGE, DELETE, and UPDATE operations, letting users upsert, clean up, and fine-tune data directly from Python without...
canonical: https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: New features in the Python deltalake 0.12.0 release | daily.dev
og:description: The Python deltalake 0.12.0 release adds MERGE, DELETE, and UPDATE operations, letting users upsert, clean up, and fine-tune data directly from Python without...
og:url: https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g
og:image: https://api.daily.dev/og/posts/cYh7EZK3g.png
og:image:alt: New features in the Python deltalake 0.12.0 release
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# New features in the Python deltalake 0.12.0 release

**[Delta Lake Blog](https://daily.dev/sources/delta-lake)** · 5 min read · 0 upvotes · 0 comments

## Summary

The Python deltalake 0.12.0 release adds MERGE, DELETE, and UPDATE operations, letting users upsert, clean up, and fine-tune data directly from Python without relying on Spark. Read performance improves by up to 10x, and interoperability with large Arrow data types is enhanced via a large_dtypes=True flag in write_deltalake, easing integration with tools like Polars. Upcoming plans include table feature support, Rust Delta Kernel integration, multiple MERGE 'when' clauses, and exposing FSCK and VACUUM operations.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://delta.io/blog/2023-10-22-delta-rs-python-v0120>

## Questions this post answers

### How do I perform an upsert with the Python deltalake library?

Use the .merge() method on a DeltaTable object combined with when_matched_update_all() and when_not_matched_insert_all(), then call execute(). This was introduced in deltalake 0.12.0 for Python, letting you specify a source DataFrame and a matching predicate to handle updates and inserts in a single operation, similar to SQL MERGE.

_Track new Delta Lake Python capabilities like this on daily.dev as you build upsert pipelines._

### How much faster is read performance in deltalake 0.12.0 for Python compared to before?

Read performance improved by up to 10 times in the Python deltalake 0.12.0 release. This release also added MERGE, DELETE, and UPDATE operations directly usable from Python, removing the need to rely on Spark for these write operations in small-to-medium data workloads.

_daily.dev keeps engineers evaluating Delta Lake performance gains across releases._

### How do I write Arrow tables with large data types using write_deltalake in deltalake 0.12.0?

Enable large_dtypes=True when calling write_deltalake to support consecutive writes with Arrow tables containing large Arrow types. This enhancement in Python deltalake 0.12.0 improves interoperability with libraries like Polars, allowing large data types to be used without needing manual conversion.

_daily.dev helps developers stay current on Arrow interoperability changes across data tools._

## Similar posts on daily.dev

- [Delta Kernel \(Rust\) and the future of the Lakehouse.](https://daily.dev/posts/delta-kernel-rust-and-the-future-of-the-lakehouse--twurulaae) · Confessions of a Data Guy · 15 upvotes · 1 comments
- [Advancing the Open Lakehouse with Apache Spark, the Delta Kernel, and the new UC Delta APIs](https://daily.dev/posts/advancing-the-open-lakehouse-with-apache-spark-the-delta-kernel-and-the-new-uc-delta-apis-dbaazlwws) · Delta Lake Blog · 0 upvotes · 0 comments
- [Advancing the Lakehouse with Apache Iceberg v3 on Databricks](https://daily.dev/posts/advancing-the-lakehouse-with-apache-iceberg-v3-on-databricks-6p6wf37qi) · databricks · 4 upvotes · 0 comments
- [Delta Grows Up: Writes, Unity Catalog and Time Travel](https://daily.dev/posts/delta-grows-up-writes-unity-catalog-and-time-travel-j5aia1x3q) · DuckDB · 0 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#backend](https://daily.dev/tags/backend), [#data-engineering](https://daily.dev/tags/data-engineering), [#apache-arrow](https://daily.dev/tags/apache-arrow)

[View this post on daily.dev](https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"New features in the Python deltalake 0.12.0 release","url":"https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g"},"datePublished":"2026-08-16T08:53:51.644Z","dateModified":"2026-08-16T08:57:17.478Z","description":"The Python deltalake 0.12.0 release adds MERGE, DELETE, and UPDATE operations, letting users upsert, clean up, and fine-tune data directly from Python without...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4801ffa09be8beeb0ec7806b586008c5?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/4801ffa09be8beeb0ec7806b586008c5?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Delta Lake Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Delta Lake Blog","logo":"https://media.daily.dev/image/upload/s--7f2q9Asf--/f_auto,q_auto/v1786870393/logos/delta-lake?_a=BAMAMicg0","url":"https://daily.dev/sources/delta-lake"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,backend,data-engineering,apache-arrow","timeRequired":"PT5M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Delta Lake Blog","item":"https://daily.dev/sources/delta-lake"},{"@type":"ListItem","position":3,"name":"New features in the Python deltalake 0.12.0 release"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/new-features-in-the-python-deltalake-0-12-0-release-cyh7ezk3g#faq","mainEntity":[{"@type":"Question","name":"How do I perform an upsert with the Python deltalake library?","acceptedAnswer":{"@type":"Answer","text":"Use the .merge() method on a DeltaTable object combined with when_matched_update_all() and when_not_matched_insert_all(), then call execute(). This was introduced in deltalake 0.12.0 for Python, letting you specify a source DataFrame and a matching predicate to handle updates and inserts in a single operation, similar to SQL MERGE. Track new Delta Lake Python capabilities like this on daily.dev as you build upsert pipelines."}},{"@type":"Question","name":"How much faster is read performance in deltalake 0.12.0 for Python compared to before?","acceptedAnswer":{"@type":"Answer","text":"Read performance improved by up to 10 times in the Python deltalake 0.12.0 release. This release also added MERGE, DELETE, and UPDATE operations directly usable from Python, removing the need to rely on Spark for these write operations in small-to-medium data workloads. daily.dev keeps engineers evaluating Delta Lake performance gains across releases."}},{"@type":"Question","name":"How do I write Arrow tables with large data types using write_deltalake in deltalake 0.12.0?","acceptedAnswer":{"@type":"Answer","text":"Enable large_dtypes=True when calling write_deltalake to support consecutive writes with Arrow tables containing large Arrow types. This enhancement in Python deltalake 0.12.0 improves interoperability with libraries like Polars, allowing large data types to be used without needing manual conversion. daily.dev helps developers stay current on Arrow interoperability changes across data tools."}}]}
```

