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:

Reply via email to