This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/main by this push:
new d57cc5013 feat(python/adbc_driver_postgresql): document autocommit as
acceptable parameter in connect (#3606)
d57cc5013 is described below
commit d57cc5013f9e6a38f97c77c05149d9ee5669d46a
Author: Mandukhai Alimaa <[email protected]>
AuthorDate: Thu Oct 23 01:18:48 2025 -0500
feat(python/adbc_driver_postgresql): document autocommit as acceptable
parameter in connect (#3606)
The way to pass autocommit to connect was unclear and undocumented
leading confusion for users. So explicit documentation was added to
make it clearer.
Closes #3426
---------
Co-authored-by: David Li <[email protected]>
---
docs/source/python/recipe/postgresql.rst | 5 +++
docs/source/python/recipe/postgresql_autocommit.py | 46 ++++++++++++++++++++++
.../adbc_driver_postgresql/dbapi.py | 9 ++++-
3 files changed, 59 insertions(+), 1 deletion(-)
diff --git a/docs/source/python/recipe/postgresql.rst
b/docs/source/python/recipe/postgresql.rst
index f1f885d02..279a1ef69 100644
--- a/docs/source/python/recipe/postgresql.rst
+++ b/docs/source/python/recipe/postgresql.rst
@@ -24,6 +24,11 @@ Authenticate with a username and password
.. recipe:: postgresql_authenticate.py
+Enable autocommit mode
+=======================
+
+.. recipe:: postgresql_autocommit.py
+
.. _recipe-postgresql-create-append:
Create/append to a table from an Arrow dataset
diff --git a/docs/source/python/recipe/postgresql_autocommit.py
b/docs/source/python/recipe/postgresql_autocommit.py
new file mode 100644
index 000000000..91ed787d8
--- /dev/null
+++ b/docs/source/python/recipe/postgresql_autocommit.py
@@ -0,0 +1,46 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# RECIPE CATEGORY: PostgreSQL
+# RECIPE KEYWORDS: autocommit, transactions
+# RECIPE STARTS HERE
+#: You can enable autocommit mode by passing the ``autocommit`` parameter
+#: to the ``connect`` function. When autocommit is enabled, each statement
+#: is automatically committed without needing to call ``commit()`` explicitly.
+#: This is useful for operations that cannot be run inside a transaction,
+#: or when you want each statement to be committed immediately.
+
+import os
+
+import adbc_driver_postgresql.dbapi
+
+uri = os.environ["ADBC_POSTGRESQL_TEST_URI"]
+
+# Enable autocommit mode
+conn = adbc_driver_postgresql.dbapi.connect(uri, autocommit=True)
+
+with conn.cursor() as cur:
+ # In autocommit mode, this statement is automatically committed
+ cur.execute("CREATE TEMP TABLE IF NOT EXISTS autocommit_test (id INTEGER)")
+ cur.execute("INSERT INTO autocommit_test VALUES (1)")
+
+# Verify the data was committed
+with conn.cursor() as cur:
+ cur.execute("SELECT * FROM autocommit_test")
+ assert cur.fetchone() == (1,)
+
+conn.close()
diff --git a/python/adbc_driver_postgresql/adbc_driver_postgresql/dbapi.py
b/python/adbc_driver_postgresql/adbc_driver_postgresql/dbapi.py
index b5fbc5a9e..3a52b3078 100644
--- a/python/adbc_driver_postgresql/adbc_driver_postgresql/dbapi.py
+++ b/python/adbc_driver_postgresql/adbc_driver_postgresql/dbapi.py
@@ -98,6 +98,8 @@ def connect(
uri: str,
db_kwargs: typing.Optional[typing.Dict[str, str]] = None,
conn_kwargs: typing.Optional[typing.Dict[str, str]] = None,
+ *,
+ autocommit: bool = False,
**kwargs,
) -> "Connection":
"""
@@ -113,6 +115,11 @@ def connect(
Connection-specific parameters. (ADBC differentiates between
a 'database' object shared between multiple 'connection'
objects.)
+ autocommit : bool
+ Enable autocommit mode. If True, transactions are automatically
+ committed after each statement. Defaults to False.
+ **kwargs
+ Additional keyword arguments passed to the Connection constructor.
"""
db = None
conn = None
@@ -121,7 +128,7 @@ def connect(
db = adbc_driver_postgresql.connect(uri, db_kwargs=db_kwargs)
conn = adbc_driver_manager.AdbcConnection(db, **(conn_kwargs or {}))
return adbc_driver_manager.dbapi.Connection(
- db, conn, conn_kwargs=conn_kwargs, **kwargs
+ db, conn, conn_kwargs=conn_kwargs, autocommit=autocommit, **kwargs
)
except Exception:
if conn: