This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 8ddc779f publish documentation
8ddc779f is described below
commit 8ddc779f001f02bf074dda9e9d070f351d95bee5
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Jun 13 01:54:25 2023 +0000
publish documentation
---
main/_sources/driver/postgresql.rst.txt | 2 +
main/_sources/python/index.rst.txt | 1 +
.../driver_manager.rst.txt} | 14 +-
main/_sources/python/{ => recipe}/index.rst.txt | 12 +-
.../{index.rst.txt => recipe/postgresql.rst.txt} | 34 +-
main/cpp/api/adbc.html | 5 +
main/cpp/api/adbc_driver_manager.html | 5 +
main/cpp/api/index.html | 5 +
main/cpp/concurrency.html | 5 +
main/cpp/driver_manager.html | 5 +
main/cpp/index.html | 5 +
main/development/contributing.html | 5 +
main/development/nightly.html | 5 +
main/development/releasing.html | 5 +
main/driver/flight_sql.html | 5 +
main/driver/installation.html | 11 +-
main/driver/jdbc.html | 5 +
main/driver/postgresql.html | 6 +
main/driver/snowflake.html | 5 +
main/driver/sqlite.html | 5 +
main/driver/status.html | 5 +
main/faq.html | 5 +
main/format/comparison.html | 5 +
main/format/specification.html | 5 +
main/format/versioning.html | 5 +
main/genindex.html | 5 +
main/index.html | 5 +
main/java/index.html | 5 +
main/objects.inv | Bin 7422 -> 7469 bytes
main/py-modindex.html | 5 +
main/python/api/adbc_driver_flightsql.html | 5 +
main/python/api/adbc_driver_manager.html | 5 +
main/python/api/adbc_driver_postgresql.html | 5 +
main/python/api/adbc_driver_sqlite.html | 11 +-
main/python/api/index.html | 5 +
main/python/driver_manager.html | 5 +
main/python/index.html | 10 +
main/python/quickstart.html | 5 +
.../driver_manager.html} | 92 +--
main/python/{api => recipe}/index.html | 51 +-
main/python/recipe/postgresql.html | 636 +++++++++++++++++++++
main/search.html | 5 +
main/searchindex.js | 2 +-
43 files changed, 940 insertions(+), 87 deletions(-)
diff --git a/main/_sources/driver/postgresql.rst.txt
b/main/_sources/driver/postgresql.rst.txt
index 570ac81f..b8e43db2 100644
--- a/main/_sources/driver/postgresql.rst.txt
+++ b/main/_sources/driver/postgresql.rst.txt
@@ -110,6 +110,8 @@ the :cpp:class:`AdbcDatabase`. This should be a
`connection URI
with adbc_driver_postgresql.dbapi.connect(uri) as conn:
pass
+ For more examples, see :doc:`../python/recipe/postgresql`.
+
.. tab-item:: R
:sync: r
diff --git a/main/_sources/python/index.rst.txt
b/main/_sources/python/index.rst.txt
index 862ee9d4..e2ab22ba 100644
--- a/main/_sources/python/index.rst.txt
+++ b/main/_sources/python/index.rst.txt
@@ -25,3 +25,4 @@ Python
quickstart
driver_manager
api/index
+ recipe/index
diff --git a/main/_sources/python/index.rst.txt
b/main/_sources/python/recipe/driver_manager.rst.txt
similarity index 80%
copy from main/_sources/python/index.rst.txt
copy to main/_sources/python/recipe/driver_manager.rst.txt
index 862ee9d4..349d5490 100644
--- a/main/_sources/python/index.rst.txt
+++ b/main/_sources/python/recipe/driver_manager.rst.txt
@@ -15,13 +15,11 @@
.. specific language governing permissions and limitations
.. under the License.
-======
-Python
-======
+======================
+Driver Manager Recipes
+======================
-.. toctree::
- :maxdepth: 2
+Load a driver from a shared library (DuckDB)
+============================================
- quickstart
- driver_manager
- api/index
+.. recipe:: driver_manager_duckdb.py
diff --git a/main/_sources/python/index.rst.txt
b/main/_sources/python/recipe/index.rst.txt
similarity index 86%
copy from main/_sources/python/index.rst.txt
copy to main/_sources/python/recipe/index.rst.txt
index 862ee9d4..b841b7f1 100644
--- a/main/_sources/python/index.rst.txt
+++ b/main/_sources/python/recipe/index.rst.txt
@@ -15,13 +15,15 @@
.. specific language governing permissions and limitations
.. under the License.
-======
-Python
-======
+===============
+Python Cookbook
+===============
+
+The cookbook provides task-oriented example code for using ADBC in
+Python.
.. toctree::
:maxdepth: 2
- quickstart
driver_manager
- api/index
+ postgresql
diff --git a/main/_sources/python/index.rst.txt
b/main/_sources/python/recipe/postgresql.rst.txt
similarity index 54%
copy from main/_sources/python/index.rst.txt
copy to main/_sources/python/recipe/postgresql.rst.txt
index 862ee9d4..dbf28adb 100644
--- a/main/_sources/python/index.rst.txt
+++ b/main/_sources/python/recipe/postgresql.rst.txt
@@ -15,13 +15,31 @@
.. specific language governing permissions and limitations
.. under the License.
-======
-Python
-======
+==================
+PostgreSQL Recipes
+==================
-.. toctree::
- :maxdepth: 2
+Authenticate with a username and password
+=========================================
- quickstart
- driver_manager
- api/index
+.. recipe:: postgresql_authenticate.py
+
+Create/append to a table from an Arrow table
+============================================
+
+.. recipe:: postgresql_create_append_table.py
+
+Execute a statement with bind parameters
+========================================
+
+.. recipe:: postgresql_execute_bind.py
+
+Get the Arrow schema of a table
+===============================
+
+.. recipe:: postgresql_get_table_schema.py
+
+List catalogs, schemas, and tables
+==================================
+
+.. recipe:: postgresql_list_catalogs.py
diff --git a/main/cpp/api/adbc.html b/main/cpp/api/adbc.html
index 6db5e842..a57bae8a 100644
--- a/main/cpp/api/adbc.html
+++ b/main/cpp/api/adbc.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/cpp/api/adbc_driver_manager.html
b/main/cpp/api/adbc_driver_manager.html
index b38fdc4a..530f40b4 100644
--- a/main/cpp/api/adbc_driver_manager.html
+++ b/main/cpp/api/adbc_driver_manager.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/cpp/api/index.html b/main/cpp/api/index.html
index fe9be0ca..06af8168 100644
--- a/main/cpp/api/index.html
+++ b/main/cpp/api/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/cpp/concurrency.html b/main/cpp/concurrency.html
index 8b44f35d..ce134f96 100644
--- a/main/cpp/concurrency.html
+++ b/main/cpp/concurrency.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/cpp/driver_manager.html b/main/cpp/driver_manager.html
index 3260a89e..ee3332c8 100644
--- a/main/cpp/driver_manager.html
+++ b/main/cpp/driver_manager.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/cpp/index.html b/main/cpp/index.html
index 83aa9cbc..aa9bb941 100644
--- a/main/cpp/index.html
+++ b/main/cpp/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/development/contributing.html
b/main/development/contributing.html
index 8c7d4725..83a86f26 100644
--- a/main/development/contributing.html
+++ b/main/development/contributing.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/development/nightly.html b/main/development/nightly.html
index bb56f1c3..fb602c1d 100644
--- a/main/development/nightly.html
+++ b/main/development/nightly.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/development/releasing.html b/main/development/releasing.html
index 548d8de0..b88916f7 100644
--- a/main/development/releasing.html
+++ b/main/development/releasing.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/driver/flight_sql.html b/main/driver/flight_sql.html
index 43397de2..dbad0493 100644
--- a/main/driver/flight_sql.html
+++ b/main/driver/flight_sql.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/driver/installation.html b/main/driver/installation.html
index 7996f5f8..0a4e7656 100644
--- a/main/driver/installation.html
+++ b/main/driver/installation.html
@@ -5,7 +5,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator"
content="Docutils 0.19: https://docutils.sourceforge.io/" />
-<link rel="index" title="Index" href="../genindex.html" /><link rel="search"
title="Search" href="../search.html" /><link rel="next" title="Driver
Implementation Status" href="status.html" /><link rel="prev"
title="adbc_driver_sqlite" href="../python/api/adbc_driver_sqlite.html" />
+<link rel="index" title="Index" href="../genindex.html" /><link rel="search"
title="Search" href="../search.html" /><link rel="next" title="Driver
Implementation Status" href="status.html" /><link rel="prev" title="PostgreSQL
Recipes" href="../python/recipe/postgresql.html" />
<!-- Generated with Sphinx 5.3.0 and Furo 2023.05.20 -->
<title>Installation - ADBC 0.5.0 (dev) documentation</title>
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
@@ -384,14 +389,14 @@
</div>
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
</a>
- <a class="prev-page" href="../python/api/adbc_driver_sqlite.html">
+ <a class="prev-page" href="../python/recipe/postgresql.html">
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></div>
+ <div class="title">PostgreSQL Recipes</div>
</div>
</a>
diff --git a/main/driver/jdbc.html b/main/driver/jdbc.html
index bea5a32a..ac89093b 100644
--- a/main/driver/jdbc.html
+++ b/main/driver/jdbc.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/driver/postgresql.html b/main/driver/postgresql.html
index d88dad95..16071654 100644
--- a/main/driver/postgresql.html
+++ b/main/driver/postgresql.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
@@ -398,6 +403,7 @@ Python</label><div class="sd-tab-content docutils">
<span class="k">pass</span>
</pre></div>
</div>
+<p>For more examples, see <a class="reference internal"
href="../python/recipe/postgresql.html"><span class="doc">PostgreSQL
Recipes</span></a>.</p>
</div>
<input id="sd-tab-item-6" name="sd-tab-set-1" type="radio">
</input><label class="sd-tab-label" data-sync-id="r" for="sd-tab-item-6">
diff --git a/main/driver/snowflake.html b/main/driver/snowflake.html
index f3782b73..4a81daef 100644
--- a/main/driver/snowflake.html
+++ b/main/driver/snowflake.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/driver/sqlite.html b/main/driver/sqlite.html
index 3aa9c88e..4c05d11c 100644
--- a/main/driver/sqlite.html
+++ b/main/driver/sqlite.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/driver/status.html b/main/driver/status.html
index aa06c790..e7caafca 100644
--- a/main/driver/status.html
+++ b/main/driver/status.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/faq.html b/main/faq.html
index d7107682..de0c058a 100644
--- a/main/faq.html
+++ b/main/faq.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/format/comparison.html b/main/format/comparison.html
index c6eb0234..c0fa00c5 100644
--- a/main/format/comparison.html
+++ b/main/format/comparison.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/format/specification.html b/main/format/specification.html
index e1a59651..ff9ce72c 100644
--- a/main/format/specification.html
+++ b/main/format/specification.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/format/versioning.html b/main/format/versioning.html
index e107123a..3a87a2f5 100644
--- a/main/format/versioning.html
+++ b/main/format/versioning.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/genindex.html b/main/genindex.html
index 8c31a63b..d8760320 100644
--- a/main/genindex.html
+++ b/main/genindex.html
@@ -245,6 +245,11 @@
<li class="toctree-l3"><a class="reference internal"
href="python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/index.html b/main/index.html
index 5f366672..d6a72e3d 100644
--- a/main/index.html
+++ b/main/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/java/index.html b/main/java/index.html
index cd76dfcb..3e7325c4 100644
--- a/main/java/index.html
+++ b/main/java/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="../python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/objects.inv b/main/objects.inv
index f8ee6aac..3f7e1400 100644
Binary files a/main/objects.inv and b/main/objects.inv differ
diff --git a/main/py-modindex.html b/main/py-modindex.html
index 010b68fb..5ac3323e 100644
--- a/main/py-modindex.html
+++ b/main/py-modindex.html
@@ -245,6 +245,11 @@
<li class="toctree-l3"><a class="reference internal"
href="python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/api/adbc_driver_flightsql.html
b/main/python/api/adbc_driver_flightsql.html
index 30782d6f..6a7f53fd 100644
--- a/main/python/api/adbc_driver_flightsql.html
+++ b/main/python/api/adbc_driver_flightsql.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/api/adbc_driver_manager.html
b/main/python/api/adbc_driver_manager.html
index 692589cd..545eed5f 100644
--- a/main/python/api/adbc_driver_manager.html
+++ b/main/python/api/adbc_driver_manager.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/api/adbc_driver_postgresql.html
b/main/python/api/adbc_driver_postgresql.html
index 2b8afed2..4901ff23 100644
--- a/main/python/api/adbc_driver_postgresql.html
+++ b/main/python/api/adbc_driver_postgresql.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/api/adbc_driver_sqlite.html
b/main/python/api/adbc_driver_sqlite.html
index 6d1f7649..2ff4430e 100644
--- a/main/python/api/adbc_driver_sqlite.html
+++ b/main/python/api/adbc_driver_sqlite.html
@@ -5,7 +5,7 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator"
content="Docutils 0.19: https://docutils.sourceforge.io/" />
-<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="Installation" href="../../driver/installation.html" /><link rel="prev"
title="adbc_driver_postgresql" href="adbc_driver_postgresql.html" />
+<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="Python Cookbook" href="../recipe/index.html" /><link rel="prev"
title="adbc_driver_postgresql" href="adbc_driver_postgresql.html" />
<!-- Generated with Sphinx 5.3.0 and Furo 2023.05.20 -->
<title>adbc_driver_sqlite - ADBC 0.5.0 (dev) documentation</title>
@@ -247,6 +247,11 @@
<li class="toctree-l3 current current-page"><a class="current reference
internal" href="#"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
@@ -355,12 +360,12 @@
<footer>
<div class="related-pages">
- <a class="next-page" href="../../driver/installation.html">
+ <a class="next-page" href="../recipe/index.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title">Installation</div>
+ <div class="title">Python Cookbook</div>
</div>
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
</a>
diff --git a/main/python/api/index.html b/main/python/api/index.html
index 1251a153..cdb6ee5a 100644
--- a/main/python/api/index.html
+++ b/main/python/api/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/driver_manager.html b/main/python/driver_manager.html
index b289897b..ffc58a5f 100644
--- a/main/python/driver_manager.html
+++ b/main/python/driver_manager.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/index.html b/main/python/index.html
index 17747b59..869d466b 100644
--- a/main/python/index.html
+++ b/main/python/index.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
@@ -335,6 +340,11 @@
<li class="toctree-l2"><a class="reference internal"
href="api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l1"><a class="reference internal"
href="recipe/index.html">Python Cookbook</a><ul>
+<li class="toctree-l2"><a class="reference internal"
href="recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</div>
</section>
diff --git a/main/python/quickstart.html b/main/python/quickstart.html
index 967dbc74..bb59e8ab 100644
--- a/main/python/quickstart.html
+++ b/main/python/quickstart.html
@@ -247,6 +247,11 @@
<li class="toctree-l3"><a class="reference internal"
href="api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="recipe/index.html">Python Cookbook</a><input class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/python/api/adbc_driver_postgresql.html
b/main/python/recipe/driver_manager.html
similarity index 75%
copy from main/python/api/adbc_driver_postgresql.html
copy to main/python/recipe/driver_manager.html
index 2b8afed2..3fdc7286 100644
--- a/main/python/api/adbc_driver_postgresql.html
+++ b/main/python/recipe/driver_manager.html
@@ -5,10 +5,10 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator"
content="Docutils 0.19: https://docutils.sourceforge.io/" />
-<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="adbc_driver_sqlite" href="adbc_driver_sqlite.html" /><link rel="prev"
title="adbc_driver_flightsql" href="adbc_driver_flightsql.html" />
+<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="PostgreSQL Recipes" href="postgresql.html" /><link rel="prev"
title="Python Cookbook" href="index.html" />
<!-- Generated with Sphinx 5.3.0 and Furo 2023.05.20 -->
- <title>adbc_driver_postgresql - ADBC 0.5.0 (dev) documentation</title>
+ <title>Driver Manager Recipes - ADBC 0.5.0 (dev) documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css"
/>
<link rel="stylesheet" type="text/css"
href="../../_static/styles/furo.css?digest=e6660623a769aa55fea372102b9bf3151b292993"
/>
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css"
/>
@@ -240,11 +240,16 @@
<li class="toctree-l1 current has-children"><a class="reference internal"
href="../index.html">Python</a><input checked="" class="toctree-checkbox"
id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch"
type="checkbox"/><label for="toctree-checkbox-4"><div
class="visually-hidden">Toggle navigation of Python</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
<li class="toctree-l2"><a class="reference internal"
href="../quickstart.html">Quickstart</a></li>
<li class="toctree-l2"><a class="reference internal"
href="../driver_manager.html">Driver Manager</a></li>
-<li class="toctree-l2 current has-children"><a class="reference internal"
href="index.html">Python API Reference</a><input checked=""
class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5"
role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div
class="visually-hidden">Toggle navigation of Python API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
-<li class="toctree-l3 current current-page"><a class="current reference
internal" href="#"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_postgresql</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../api/index.html">Python API Reference</a><input
class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5"
role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div
class="visually-hidden">Toggle navigation of Python API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_postgresql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2 current has-children"><a class="reference internal"
href="index.html">Python Cookbook</a><input checked="" class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
+<li class="toctree-l3 current current-page"><a class="current reference
internal" href="#">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="postgresql.html">PostgreSQL Recipes</a></li>
</ul>
</li>
</ul>
@@ -291,7 +296,7 @@
</a>
<div class="content-icon-container">
<div class="edit-this-page">
- <a class="muted-link"
href="https://github.com/apache/arrow-adbc/edit/main/docs/source/python/api/adbc_driver_postgresql.rst"
title="Edit this page">
+ <a class="muted-link"
href="https://github.com/apache/arrow-adbc/edit/main/docs/source/python/recipe/driver_manager.rst"
title="Edit this page">
<svg aria-hidden="true" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4" />
@@ -313,26 +318,38 @@
</label>
</div>
<article role="main">
- <section id="adbc-driver-postgresql">
-<h1><code class="docutils literal notranslate"><span
class="pre">adbc_driver_postgresql</span></code><a class="headerlink"
href="#adbc-driver-postgresql" title="Permalink to this heading">#</a></h1>
-<section id="module-adbc_driver_postgresql">
-<span id="low-level-api"></span><h2>Low-Level API<a class="headerlink"
href="#module-adbc_driver_postgresql" title="Permalink to this
heading">#</a></h2>
-<dl class="py function">
-<dt class="sig sig-object py" id="adbc_driver_postgresql.connect">
-<span class="sig-prename descclassname"><span
class="pre">adbc_driver_postgresql.</span></span><span class="sig-name
descname"><span class="pre">connect</span></span><span
class="sig-paren">(</span><em class="sig-param"><span class="n"><span
class="pre">uri</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">str</span></span></em><span class="sig-paren">)</span> <span
class="sig-return"><span class="sig-return-icon"> [...]
-<dd><p>Create a low level ADBC connection to PostgreSQL.</p>
-</dd></dl>
-
-</section>
-<section id="module-adbc_driver_postgresql.dbapi">
-<span id="dbapi-2-0-api"></span><h2>DBAPI 2.0 API<a class="headerlink"
href="#module-adbc_driver_postgresql.dbapi" title="Permalink to this
heading">#</a></h2>
-<p>DBAPI 2.0-compatible facade for the ADBC libpq driver.</p>
-<dl class="py function">
-<dt class="sig sig-object py" id="adbc_driver_postgresql.dbapi.connect">
-<span class="sig-prename descclassname"><span
class="pre">adbc_driver_postgresql.dbapi.</span></span><span class="sig-name
descname"><span class="pre">connect</span></span><span
class="sig-paren">(</span><em class="sig-param"><span class="n"><span
class="pre">uri</span></span><span class="p"><span
class="pre">:</span></span><span class="w"> </span><span class="n"><span
class="pre">str</span></span></em><span class="sig-paren">)</span> <span
class="sig-return"><span class="sig-return-icon [...]
-<dd><p>Connect to PostgreSQL via ADBC.</p>
-</dd></dl>
-
+ <section id="driver-manager-recipes">
+<h1>Driver Manager Recipes<a class="headerlink" href="#driver-manager-recipes"
title="Permalink to this heading">#</a></h1>
+<section id="load-a-driver-from-a-shared-library-duckdb">
+<h2>Load a driver from a shared library (DuckDB)<a class="headerlink"
href="#load-a-driver-from-a-shared-library-duckdb" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/driver_manager_duckdb.py">driver_manager_duckdb.py</a></p>
+<p>The ADBC driver manager can load a driver from a shared library.
+For drivers provided by the Arrow project, you don’t need to worry
+about this; the Python package will take care of this for you.
+Other drivers may need configuration, though. We’ll use <a class="reference
external" href="https://duckdb.org">DuckDB</a> as an example.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">25</span><span
class="kn">import</span> <span class="nn">duckdb</span>
+<span class="linenos">26</span>
+<span class="linenos">27</span><span class="kn">import</span> <span
class="nn">adbc_driver_manager.dbapi</span>
+</pre></div>
+</div>
+<p>The driver manager needs the path to the shared library. It also
+needs the name of the entrypoint function. Both of these should be
+found in the driver’s documentation.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">32</span><span
class="n">conn</span> <span class="o">=</span> <span
class="n">adbc_driver_manager</span><span class="o">.</span><span
class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span>
+<span class="linenos">33</span> <span class="n">driver</span><span
class="o">=</span><span class="n">duckdb</span><span class="o">.</span><span
class="vm">__file__</span><span class="p">,</span>
+<span class="linenos">34</span> <span class="n">entrypoint</span><span
class="o">=</span><span class="s2">"duckdb_adbc_init"</span><span
class="p">,</span>
+<span class="linenos">35</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Once we provide that, everything else about the connection is the
+same as usual.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">40</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">41</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT 1"</span><span class="p">)</span>
+<span class="linenos">42</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">1</span><span class="p">,)</span>
+<span class="linenos">43</span>
+<span class="linenos">44</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
</section>
</section>
@@ -341,23 +358,23 @@
<footer>
<div class="related-pages">
- <a class="next-page" href="adbc_driver_sqlite.html">
+ <a class="next-page" href="postgresql.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></div>
+ <div class="title">PostgreSQL Recipes</div>
</div>
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
</a>
- <a class="prev-page" href="adbc_driver_flightsql.html">
+ <a class="prev-page" href="index.html">
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></div>
+ <div class="title">Python Cookbook</div>
</div>
</a>
@@ -391,15 +408,8 @@
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
-<li><a class="reference internal" href="#"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a><ul>
-<li><a class="reference internal"
href="#module-adbc_driver_postgresql">Low-Level API</a><ul>
-<li><a class="reference internal" href="#adbc_driver_postgresql.connect"><code
class="docutils literal notranslate"><span
class="pre">connect()</span></code></a></li>
-</ul>
-</li>
-<li><a class="reference internal"
href="#module-adbc_driver_postgresql.dbapi">DBAPI 2.0 API</a><ul>
-<li><a class="reference internal"
href="#adbc_driver_postgresql.dbapi.connect"><code class="docutils literal
notranslate"><span class="pre">connect()</span></code></a></li>
-</ul>
-</li>
+<li><a class="reference internal" href="#">Driver Manager Recipes</a><ul>
+<li><a class="reference internal"
href="#load-a-driver-from-a-shared-library-duckdb">Load a driver from a shared
library (DuckDB)</a></li>
</ul>
</li>
</ul>
diff --git a/main/python/api/index.html b/main/python/recipe/index.html
similarity index 81%
copy from main/python/api/index.html
copy to main/python/recipe/index.html
index 1251a153..3b8d6476 100644
--- a/main/python/api/index.html
+++ b/main/python/recipe/index.html
@@ -5,10 +5,10 @@
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="generator"
content="Docutils 0.19: https://docutils.sourceforge.io/" />
-<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="adbc_driver_manager" href="adbc_driver_manager.html" /><link rel="prev"
title="Driver Manager" href="../driver_manager.html" />
+<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="Driver Manager Recipes" href="driver_manager.html" /><link rel="prev"
title="adbc_driver_sqlite" href="../api/adbc_driver_sqlite.html" />
<!-- Generated with Sphinx 5.3.0 and Furo 2023.05.20 -->
- <title>Python API Reference - ADBC 0.5.0 (dev) documentation</title>
+ <title>Python Cookbook - ADBC 0.5.0 (dev) documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css"
/>
<link rel="stylesheet" type="text/css"
href="../../_static/styles/furo.css?digest=e6660623a769aa55fea372102b9bf3151b292993"
/>
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css"
/>
@@ -240,11 +240,16 @@
<li class="toctree-l1 current has-children"><a class="reference internal"
href="../index.html">Python</a><input checked="" class="toctree-checkbox"
id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch"
type="checkbox"/><label for="toctree-checkbox-4"><div
class="visually-hidden">Toggle navigation of Python</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
<li class="toctree-l2"><a class="reference internal"
href="../quickstart.html">Quickstart</a></li>
<li class="toctree-l2"><a class="reference internal"
href="../driver_manager.html">Driver Manager</a></li>
-<li class="toctree-l2 current has-children current-page"><a class="current
reference internal" href="#">Python API Reference</a><input checked=""
class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5"
role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div
class="visually-hidden">Toggle navigation of Python API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_postgresql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a></li>
-<li class="toctree-l3"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../api/index.html">Python API Reference</a><input
class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5"
role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div
class="visually-hidden">Toggle navigation of Python API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_postgresql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2 current has-children current-page"><a class="current
reference internal" href="#">Python Cookbook</a><input checked=""
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="postgresql.html">PostgreSQL Recipes</a></li>
</ul>
</li>
</ul>
@@ -291,7 +296,7 @@
</a>
<div class="content-icon-container">
<div class="edit-this-page">
- <a class="muted-link"
href="https://github.com/apache/arrow-adbc/edit/main/docs/source/python/api/index.rst"
title="Edit this page">
+ <a class="muted-link"
href="https://github.com/apache/arrow-adbc/edit/main/docs/source/python/recipe/index.rst"
title="Edit this page">
<svg aria-hidden="true" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4" />
@@ -313,14 +318,24 @@
</label>
</div>
<article role="main">
- <section id="python-api-reference">
-<h1>Python API Reference<a class="headerlink" href="#python-api-reference"
title="Permalink to this heading">#</a></h1>
+ <section id="python-cookbook">
+<h1>Python Cookbook<a class="headerlink" href="#python-cookbook"
title="Permalink to this heading">#</a></h1>
+<p>The cookbook provides task-oriented example code for using ADBC in
+Python.</p>
<div class="toctree-wrapper compound">
<ul>
-<li class="toctree-l1"><a class="reference internal"
href="adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
-<li class="toctree-l1"><a class="reference internal"
href="adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
-<li class="toctree-l1"><a class="reference internal"
href="adbc_driver_postgresql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a></li>
-<li class="toctree-l1"><a class="reference internal"
href="adbc_driver_sqlite.html"><code class="docutils literal notranslate"><span
class="pre">adbc_driver_sqlite</span></code></a></li>
+<li class="toctree-l1"><a class="reference internal"
href="driver_manager.html">Driver Manager Recipes</a><ul>
+<li class="toctree-l2"><a class="reference internal"
href="driver_manager.html#load-a-driver-from-a-shared-library-duckdb">Load a
driver from a shared library (DuckDB)</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal"
href="postgresql.html">PostgreSQL Recipes</a><ul>
+<li class="toctree-l2"><a class="reference internal"
href="postgresql.html#authenticate-with-a-username-and-password">Authenticate
with a username and password</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="postgresql.html#create-append-to-a-table-from-an-arrow-table">Create/append
to a table from an Arrow table</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="postgresql.html#execute-a-statement-with-bind-parameters">Execute a
statement with bind parameters</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="postgresql.html#get-the-arrow-schema-of-a-table">Get the Arrow schema of
a table</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="postgresql.html#list-catalogs-schemas-and-tables">List catalogs, schemas,
and tables</a></li>
+</ul>
+</li>
</ul>
</div>
</section>
@@ -330,23 +345,23 @@
<footer>
<div class="related-pages">
- <a class="next-page" href="adbc_driver_manager.html">
+ <a class="next-page" href="driver_manager.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
- <div class="title"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></div>
+ <div class="title">Driver Manager Recipes</div>
</div>
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
</a>
- <a class="prev-page" href="../driver_manager.html">
+ <a class="prev-page" href="../api/adbc_driver_sqlite.html">
<svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
- <div class="title">Driver Manager</div>
+ <div class="title"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></div>
</div>
</a>
diff --git a/main/python/recipe/postgresql.html
b/main/python/recipe/postgresql.html
new file mode 100644
index 00000000..b16b9192
--- /dev/null
+++ b/main/python/recipe/postgresql.html
@@ -0,0 +1,636 @@
+
+
+<!doctype html>
+<html class="no-js" lang="en">
+ <head><meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width,initial-scale=1"/>
+ <meta name="color-scheme" content="light dark"><meta name="generator"
content="Docutils 0.19: https://docutils.sourceforge.io/" />
+<link rel="index" title="Index" href="../../genindex.html" /><link
rel="search" title="Search" href="../../search.html" /><link rel="next"
title="Installation" href="../../driver/installation.html" /><link rel="prev"
title="Driver Manager Recipes" href="driver_manager.html" />
+
+ <!-- Generated with Sphinx 5.3.0 and Furo 2023.05.20 -->
+ <title>PostgreSQL Recipes - ADBC 0.5.0 (dev) documentation</title>
+ <link rel="stylesheet" type="text/css" href="../../_static/pygments.css"
/>
+ <link rel="stylesheet" type="text/css"
href="../../_static/styles/furo.css?digest=e6660623a769aa55fea372102b9bf3151b292993"
/>
+ <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css"
/>
+ <link rel="stylesheet" type="text/css"
href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
+ <link rel="stylesheet" type="text/css"
href="../../_static/styles/furo-extensions.css?digest=30d1aed668e5c3a91c3e3bf6a60b675221979f0e"
/>
+ <link rel="stylesheet" type="text/css" href="../../_static/css/custom.css"
/>
+
+
+
+
+<style>
+ body {
+ --color-code-background: #f8f8f8;
+ --color-code-foreground: black;
+
+ }
+ @media not print {
+ body[data-theme="dark"] {
+ --color-code-background: #202020;
+ --color-code-foreground: #d0d0d0;
+
+ }
+ @media (prefers-color-scheme: dark) {
+ body:not([data-theme="light"]) {
+ --color-code-background: #202020;
+ --color-code-foreground: #d0d0d0;
+
+ }
+ }
+ }
+</style>
+<script>
+ const currentVersion = "0.5.0 (dev)";
+ const versionsRoot = "../../..";
+</script>
+<style>
+ #version-switcher {
+ background: var(--color-background-primary);
+ bottom: 2em;
+ box-shadow: 0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem
rgba(0,0,0,.1);
+ position: fixed;
+ right: 2em;
+ z-index: 9999;
+ }
+
+ #version-switcher button {
+ background-color: var(--sd-color-card-header);
+ border: 0;
+ color: var(--sd-color-card-text);
+ cursor: pointer;
+ font-family: var(--font-stack);
+ padding: 0.5em;
+ width: 100%;
+ }
+
+ #version-switcher button::after {
+ content: "▼";
+ }
+
+ #version-switcher.open button::after {
+ content: "▲";
+ }
+
+ #version-switcher div.versions {
+ height: 0;
+ overflow-y: hidden;
+ padding: 0 0.5em;
+ transition: all 0.2s ease-in;
+ }
+
+ #version-switcher.open div.versions {
+ height: 8em;
+ overflow-y: scroll;
+ }
+
+ #version-switcher .active {
+ font-weight: bold;
+ }
+</style>
+</head>
+ <body>
+
+ <script>
+ document.body.dataset.theme = localStorage.getItem("theme") || "auto";
+ </script>
+
+<nav id="version-switcher">
+ <button type="button"
onclick="document.getElementById('version-switcher').classList.toggle('open')">Version:
0.5.0 (dev)</button>
+ <div class="versions">
+ <ul></ul>
+ </div>
+</nav>
+
+<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
+ <symbol id="svg-toc" viewBox="0 0 24 24">
+ <title>Contents</title>
+ <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0
0 1024 1024">
+ <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8
3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6
8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8
8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4
0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4
518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4
505.1a8.74 8.74 0 0 0 0 13.8z"/>
+ </svg>
+ </symbol>
+ <symbol id="svg-menu" viewBox="0 0 24 24">
+ <title>Menu</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor"
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather-menu">
+ <line x1="3" y1="12" x2="21" y2="12"></line>
+ <line x1="3" y1="6" x2="21" y2="6"></line>
+ <line x1="3" y1="18" x2="21" y2="18"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-arrow-right" viewBox="0 0 24 24">
+ <title>Expand</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor"
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="feather-chevron-right">
+ <polyline points="9 18 15 12 9 6"></polyline>
+ </svg>
+ </symbol>
+ <symbol id="svg-sun" viewBox="0 0 24 24">
+ <title>Light mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor"
+ stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"
class="feather-sun">
+ <circle cx="12" cy="12" r="5"></circle>
+ <line x1="12" y1="1" x2="12" y2="3"></line>
+ <line x1="12" y1="21" x2="12" y2="23"></line>
+ <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
+ <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
+ <line x1="1" y1="12" x2="3" y2="12"></line>
+ <line x1="21" y1="12" x2="23" y2="12"></line>
+ <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
+ <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
+ </svg>
+ </symbol>
+ <symbol id="svg-moon" viewBox="0 0 24 24">
+ <title>Dark mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor"
+ stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"
class="icon-tabler-moon">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
+ <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1
-8.313 -12.454z" />
+ </svg>
+ </symbol>
+ <symbol id="svg-sun-half" viewBox="0 0 24 24">
+ <title>Auto light/dark mode</title>
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
stroke="currentColor"
+ stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"
class="icon-tabler-shadow">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <circle cx="12" cy="12" r="9" />
+ <path d="M13 12h5" />
+ <path d="M13 15h4" />
+ <path d="M13 18h1" />
+ <path d="M13 9h4" />
+ <path d="M13 6h1" />
+ </svg>
+ </symbol>
+</svg>
+
+<input type="checkbox" class="sidebar-toggle" name="__navigation"
id="__navigation">
+<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
+<label class="overlay sidebar-overlay" for="__navigation">
+ <div class="visually-hidden">Hide navigation sidebar</div>
+</label>
+<label class="overlay toc-overlay" for="__toc">
+ <div class="visually-hidden">Hide table of contents sidebar</div>
+</label>
+
+
+
+<div class="page">
+ <header class="mobile-header">
+ <div class="header-left">
+ <label class="nav-overlay-icon" for="__navigation">
+ <div class="visually-hidden">Toggle site navigation sidebar</div>
+ <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
+ </label>
+ </div>
+ <div class="header-center">
+ <a href="../../index.html"><div class="brand">ADBC 0.5.0 (dev)
documentation</div></a>
+ </div>
+ <div class="header-right">
+ <div class="theme-toggle-container theme-toggle-header">
+ <button class="theme-toggle">
+ <div class="visually-hidden">Toggle Light / Dark / Auto color
theme</div>
+ <svg class="theme-icon-when-auto"><use
href="#svg-sun-half"></use></svg>
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-header-icon" for="__toc">
+ <div class="visually-hidden">Toggle table of contents sidebar</div>
+ <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
+ </label>
+ </div>
+ </header>
+ <aside class="sidebar-drawer">
+ <div class="sidebar-container">
+
+ <div class="sidebar-sticky"><a class="sidebar-brand"
href="../../index.html">
+
+ <div class="sidebar-logo-container">
+ <img class="sidebar-logo only-light" src="../../_static/logo-light.png"
alt="Light Logo"/>
+ <img class="sidebar-logo only-dark" src="../../_static/logo-dark.png"
alt="Dark Logo"/>
+ </div>
+
+ <span class="sidebar-brand-text">ADBC 0.5.0 (dev) documentation</span>
+
+</a><form class="sidebar-search-container" method="get"
action="../../search.html" role="search">
+ <input class="sidebar-search" placeholder="Search" name="q"
aria-label="Search">
+ <input type="hidden" name="check_keywords" value="yes">
+ <input type="hidden" name="area" value="default">
+</form>
+<div id="searchbox"></div><div class="sidebar-scroll"><div
class="sidebar-tree">
+ <ul>
+<li class="toctree-l1"><a class="reference internal"
href="../../faq.html">Frequently Asked Questions (FAQ)</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Supported
Environments</span></p>
+<ul class="current">
+<li class="toctree-l1 has-children"><a class="reference internal"
href="../../cpp/index.html">C/C++</a><input class="toctree-checkbox"
id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch"
type="checkbox"/><label for="toctree-checkbox-1"><div
class="visually-hidden">Toggle navigation of C/C++</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l2"><a class="reference internal"
href="../../cpp/driver_manager.html">Driver Manager</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="../../cpp/concurrency.html">Concurrency and Thread Safety</a></li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../../cpp/api/index.html">C/C++ API Reference</a><input
class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2"
role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div
class="visually-hidden">Toggle navigation of C/C++ API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../../cpp/api/adbc.html"><code class="docutils literal notranslate"><span
class="pre">adbc.h</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../../cpp/api/adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager.h</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference external"
href="https://pkg.go.dev/github.com/apache/arrow-adbc/go/adbc">Go</a></li>
+<li class="toctree-l1 has-children"><a class="reference internal"
href="../../java/index.html">Java</a><input class="toctree-checkbox"
id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch"
type="checkbox"/><label for="toctree-checkbox-3"><div
class="visually-hidden">Toggle navigation of Java</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="simple">
+</ul>
+</li>
+<li class="toctree-l1 current has-children"><a class="reference internal"
href="../index.html">Python</a><input checked="" class="toctree-checkbox"
id="toctree-checkbox-4" name="toctree-checkbox-4" role="switch"
type="checkbox"/><label for="toctree-checkbox-4"><div
class="visually-hidden">Toggle navigation of Python</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
+<li class="toctree-l2"><a class="reference internal"
href="../quickstart.html">Quickstart</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="../driver_manager.html">Driver Manager</a></li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="../api/index.html">Python API Reference</a><input
class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5"
role="switch" type="checkbox"/><label for="toctree-checkbox-5"><div
class="visually-hidden">Toggle navigation of Python API Reference</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_manager.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_manager</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_flightsql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_flightsql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_postgresql.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_postgresql</span></code></a></li>
+<li class="toctree-l3"><a class="reference internal"
href="../api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
+</ul>
+</li>
+<li class="toctree-l2 current has-children"><a class="reference internal"
href="index.html">Python Cookbook</a><input checked="" class="toctree-checkbox"
id="toctree-checkbox-6" name="toctree-checkbox-6" role="switch"
type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul
class="current">
+<li class="toctree-l3"><a class="reference internal"
href="driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3 current current-page"><a class="current reference
internal" href="#">PostgreSQL Recipes</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Drivers</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/installation.html">Installation</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/status.html">Driver Implementation Status</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/flight_sql.html">Flight SQL Driver</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/jdbc.html">JDBC Adapter</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/postgresql.html">PostgreSQL Driver</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/snowflake.html">Snowflake Driver</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../driver/sqlite.html">SQLite Driver</a></li>
+</ul>
+<p class="caption" role="heading"><span
class="caption-text">Specification</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal"
href="../../format/specification.html">ADBC API Standard</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../format/versioning.html">Versioning and Compatibility</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../format/comparison.html">Comparison with Other APIs</a></li>
+</ul>
+<p class="caption" role="heading"><span
class="caption-text">Development</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal"
href="../../development/contributing.html">Contributing</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../development/nightly.html">Nightly Packages</a></li>
+<li class="toctree-l1"><a class="reference internal"
href="../../development/releasing.html">Release Management Guide</a></li>
+</ul>
+
+</div>
+</div>
+
+ </div>
+
+ </div>
+ </aside>
+ <div class="main">
+ <div class="content">
+ <div class="article-container">
+ <a href="#" class="back-to-top muted-link">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42
1.42L13 8v12z"></path>
+ </svg>
+ <span>Back to top</span>
+ </a>
+ <div class="content-icon-container">
+ <div class="edit-this-page">
+ <a class="muted-link"
href="https://github.com/apache/arrow-adbc/edit/main/docs/source/python/recipe/postgresql.rst"
title="Edit this page">
+ <svg aria-hidden="true" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor" fill="none" stroke-linecap="round"
stroke-linejoin="round">
+ <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
+ <path d="M4 20h4l10.5 -10.5a1.5 1.5 0 0 0 -4 -4l-10.5 10.5v4" />
+ <line x1="13.5" y1="6.5" x2="17.5" y2="10.5" />
+ </svg>
+ <span class="visually-hidden">Edit this page</span>
+ </a>
+</div><div class="theme-toggle-container theme-toggle-content">
+ <button class="theme-toggle">
+ <div class="visually-hidden">Toggle Light / Dark / Auto color
theme</div>
+ <svg class="theme-icon-when-auto"><use
href="#svg-sun-half"></use></svg>
+ <svg class="theme-icon-when-dark"><use
href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use
href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-content-icon" for="__toc">
+ <div class="visually-hidden">Toggle table of contents sidebar</div>
+ <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
+ </label>
+ </div>
+ <article role="main">
+ <section id="postgresql-recipes">
+<h1>PostgreSQL Recipes<a class="headerlink" href="#postgresql-recipes"
title="Permalink to this heading">#</a></h1>
+<section id="authenticate-with-a-username-and-password">
+<h2>Authenticate with a username and password<a class="headerlink"
href="#authenticate-with-a-username-and-password" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/postgresql_authenticate.py">postgresql_authenticate.py</a></p>
+<p>To connect to a PostgreSQL database, the username and password must
+be provided in the URI. For example,</p>
+<div class="highlight-text notranslate"><div
class="highlight"><pre><span></span>postgresql://username:password@hostname:port/dbname
+</pre></div>
+</div>
+<p>See the <a class="reference external"
href="https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING">PostgreSQL
documentation</a>
+for full details.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">30</span><span
class="kn">import</span> <span class="nn">os</span>
+<span class="linenos">31</span>
+<span class="linenos">32</span><span class="kn">import</span> <span
class="nn">adbc_driver_postgresql.dbapi</span>
+<span class="linenos">33</span>
+<span class="linenos">34</span><span class="n">uri</span> <span
class="o">=</span> <span class="n">os</span><span class="o">.</span><span
class="n">environ</span><span class="p">[</span><span
class="s2">"ADBC_POSTGRESQL_TEST_URI"</span><span class="p">]</span>
+<span class="linenos">35</span><span class="n">conn</span> <span
class="o">=</span> <span class="n">adbc_driver_postgresql</span><span
class="o">.</span><span class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span><span class="n">uri</span><span
class="p">)</span>
+<span class="linenos">36</span>
+<span class="linenos">37</span><span class="k">with</span> <span
class="n">conn</span><span class="o">.</span><span class="n">cursor</span><span
class="p">()</span> <span class="k">as</span> <span class="n">cur</span><span
class="p">:</span>
+<span class="linenos">38</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT 1"</span><span class="p">)</span>
+<span class="linenos">39</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">1</span><span class="p">,)</span>
+<span class="linenos">40</span>
+<span class="linenos">41</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</section>
+<section id="create-append-to-a-table-from-an-arrow-table">
+<h2>Create/append to a table from an Arrow table<a class="headerlink"
href="#create-append-to-a-table-from-an-arrow-table" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/postgresql_create_append_table.py">postgresql_create_append_table.py</a></p>
+<p>ADBC allows creating and appending to database tables using Arrow
+tables.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">22</span><span
class="kn">import</span> <span class="nn">os</span>
+<span class="linenos">23</span>
+<span class="linenos">24</span><span class="kn">import</span> <span
class="nn">pyarrow</span>
+<span class="linenos">25</span>
+<span class="linenos">26</span><span class="kn">import</span> <span
class="nn">adbc_driver_postgresql.dbapi</span>
+<span class="linenos">27</span>
+<span class="linenos">28</span><span class="n">uri</span> <span
class="o">=</span> <span class="n">os</span><span class="o">.</span><span
class="n">environ</span><span class="p">[</span><span
class="s2">"ADBC_POSTGRESQL_TEST_URI"</span><span class="p">]</span>
+<span class="linenos">29</span><span class="n">conn</span> <span
class="o">=</span> <span class="n">adbc_driver_postgresql</span><span
class="o">.</span><span class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span><span class="n">uri</span><span
class="p">)</span>
+</pre></div>
+</div>
+<p>For the purposes of testing, we’ll first make sure the table
+doesn’t exist.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">33</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">34</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"DROP TABLE IF EXISTS example"</span><span
class="p">)</span>
+</pre></div>
+</div>
+<p>Now we can create the table.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">37</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">38</span> <span class="n">data</span> <span
class="o">=</span> <span class="n">pyarrow</span><span class="o">.</span><span
class="n">table</span><span class="p">(</span>
+<span class="linenos">39</span> <span class="p">[</span>
+<span class="linenos">40</span> <span class="p">[</span><span
class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span
class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span
class="mi">4</span><span class="p">],</span>
+<span class="linenos">41</span> <span class="p">],</span>
+<span class="linenos">42</span> <span class="n">schema</span><span
class="o">=</span><span class="n">pyarrow</span><span class="o">.</span><span
class="n">schema</span><span class="p">(</span>
+<span class="linenos">43</span> <span class="p">[</span>
+<span class="linenos">44</span> <span class="p">(</span><span
class="s2">"ints"</span><span class="p">,</span> <span
class="s2">"int32"</span><span class="p">),</span>
+<span class="linenos">45</span> <span class="p">]</span>
+<span class="linenos">46</span> <span class="p">),</span>
+<span class="linenos">47</span> <span class="p">)</span>
+<span class="linenos">48</span> <span class="n">cur</span><span
class="o">.</span><span class="n">adbc_ingest</span><span
class="p">(</span><span class="s2">"example"</span><span
class="p">,</span> <span class="n">data</span><span class="p">,</span> <span
class="n">mode</span><span class="o">=</span><span
class="s2">"create"</span><span class="p">)</span>
+<span class="linenos">49</span>
+<span class="linenos">50</span><span class="n">conn</span><span
class="o">.</span><span class="n">commit</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>After ingestion, we can fetch the result.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">53</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">54</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT * FROM example"</span><span class="p">)</span>
+<span class="linenos">55</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">1</span><span class="p">,)</span>
+<span class="linenos">56</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">2</span><span class="p">,)</span>
+<span class="linenos">57</span>
+<span class="linenos">58</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT COUNT(*) FROM example"</span><span
class="p">)</span>
+<span class="linenos">59</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">4</span><span class="p">,)</span>
+</pre></div>
+</div>
+<p>If we try to ingest again, it’ll fail, because the table already
+exists.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">63</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">64</span> <span class="k">try</span><span
class="p">:</span>
+<span class="linenos">65</span> <span class="n">cur</span><span
class="o">.</span><span class="n">adbc_ingest</span><span
class="p">(</span><span class="s2">"example"</span><span
class="p">,</span> <span class="n">data</span><span class="p">,</span> <span
class="n">mode</span><span class="o">=</span><span
class="s2">"create"</span><span class="p">)</span>
+<span class="linenos">66</span> <span class="k">except</span> <span
class="n">conn</span><span class="o">.</span><span
class="n">OperationalError</span><span class="p">:</span>
+<span class="linenos">67</span> <span class="k">pass</span>
+<span class="linenos">68</span> <span class="k">else</span><span
class="p">:</span>
+<span class="linenos">69</span> <span class="k">raise</span> <span
class="ne">RuntimeError</span><span class="p">(</span><span
class="s2">"Should have failed!"</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Instead, we can append to the table.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">72</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">73</span> <span class="n">cur</span><span
class="o">.</span><span class="n">adbc_ingest</span><span
class="p">(</span><span class="s2">"example"</span><span
class="p">,</span> <span class="n">data</span><span class="p">,</span> <span
class="n">mode</span><span class="o">=</span><span
class="s2">"append"</span><span class="p">)</span>
+<span class="linenos">74</span>
+<span class="linenos">75</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT COUNT(*) FROM example"</span><span
class="p">)</span>
+<span class="linenos">76</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">8</span><span class="p">,)</span>
+<span class="linenos">77</span>
+<span class="linenos">78</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</section>
+<section id="execute-a-statement-with-bind-parameters">
+<h2>Execute a statement with bind parameters<a class="headerlink"
href="#execute-a-statement-with-bind-parameters" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/postgresql_execute_bind.py">postgresql_execute_bind.py</a></p>
+<p>ADBC allows using Python and Arrow values as bind parameters.
+Right now, the PostgreSQL driver only supports bind parameters
+for queries that don’t generate result sets.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">24</span><span
class="kn">import</span> <span class="nn">os</span>
+<span class="linenos">25</span>
+<span class="linenos">26</span><span class="kn">import</span> <span
class="nn">pyarrow</span>
+<span class="linenos">27</span>
+<span class="linenos">28</span><span class="kn">import</span> <span
class="nn">adbc_driver_postgresql.dbapi</span>
+<span class="linenos">29</span>
+<span class="linenos">30</span><span class="n">uri</span> <span
class="o">=</span> <span class="n">os</span><span class="o">.</span><span
class="n">environ</span><span class="p">[</span><span
class="s2">"ADBC_POSTGRESQL_TEST_URI"</span><span class="p">]</span>
+<span class="linenos">31</span><span class="n">conn</span> <span
class="o">=</span> <span class="n">adbc_driver_postgresql</span><span
class="o">.</span><span class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span><span class="n">uri</span><span
class="p">)</span>
+</pre></div>
+</div>
+<p>We’ll create an example table to test.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">34</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">35</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"DROP TABLE IF EXISTS example"</span><span
class="p">)</span>
+<span class="linenos">36</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"CREATE TABLE example (ints INT, bigints
BIGINT)"</span><span class="p">)</span>
+<span class="linenos">37</span>
+<span class="linenos">38</span><span class="n">conn</span><span
class="o">.</span><span class="n">commit</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>We can bind Python values:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">41</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">42</span> <span class="n">cur</span><span
class="o">.</span><span class="n">executemany</span><span
class="p">(</span><span class="s2">"INSERT INTO example VALUES ($1,
$2)"</span><span class="p">,</span> <span class="p">[(</span><span
class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span
class="p">),</span> <span class="p">(</span><span class="mi">3</span><span
class="p">,</span> <span class="mi">4</span><span class="p">)])</span>
+<span class="linenos">43</span>
+<span class="linenos">44</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT SUM(ints) FROM example"</span><span
class="p">)</span>
+<span class="linenos">45</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">4</span><span class="p">,)</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>If you’re used to the format-string style <code class="docutils literal
notranslate"><span class="pre">%s</span></code> syntax that
+libraries like psycopg use for bind parameters, note that this
+is not supported—only the PostgreSQL-native <code class="docutils literal
notranslate"><span class="pre">$1</span></code> syntax.</p>
+</div>
+<p>We can also bind Arrow values:</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">52</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">53</span> <span class="n">data</span> <span
class="o">=</span> <span class="n">pyarrow</span><span class="o">.</span><span
class="n">record_batch</span><span class="p">(</span>
+<span class="linenos">54</span> <span class="p">[</span>
+<span class="linenos">55</span> <span class="p">[</span><span
class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span
class="p">],</span>
+<span class="linenos">56</span> <span class="p">[</span><span
class="mi">7</span><span class="p">,</span> <span class="mi">8</span><span
class="p">],</span>
+<span class="linenos">57</span> <span class="p">],</span>
+<span class="linenos">58</span> <span class="n">names</span><span
class="o">=</span><span class="p">[</span><span
class="s2">"$1"</span><span class="p">,</span> <span
class="s2">"$2"</span><span class="p">],</span>
+<span class="linenos">59</span> <span class="p">)</span>
+<span class="linenos">60</span> <span class="n">cur</span><span
class="o">.</span><span class="n">executemany</span><span
class="p">(</span><span class="s2">"INSERT INTO example VALUES ($1,
$2)"</span><span class="p">,</span> <span class="n">data</span><span
class="p">)</span>
+<span class="linenos">61</span>
+<span class="linenos">62</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"SELECT SUM(ints) FROM example"</span><span
class="p">)</span>
+<span class="linenos">63</span> <span class="k">assert</span> <span
class="n">cur</span><span class="o">.</span><span
class="n">fetchone</span><span class="p">()</span> <span class="o">==</span>
<span class="p">(</span><span class="mi">15</span><span class="p">,)</span>
+<span class="linenos">64</span>
+<span class="linenos">65</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</section>
+<section id="get-the-arrow-schema-of-a-table">
+<h2>Get the Arrow schema of a table<a class="headerlink"
href="#get-the-arrow-schema-of-a-table" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/postgresql_get_table_schema.py">postgresql_get_table_schema.py</a></p>
+<p>ADBC lets you get the schema of a table as an Arrow schema.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">22</span><span
class="kn">import</span> <span class="nn">os</span>
+<span class="linenos">23</span>
+<span class="linenos">24</span><span class="kn">import</span> <span
class="nn">pyarrow</span>
+<span class="linenos">25</span>
+<span class="linenos">26</span><span class="kn">import</span> <span
class="nn">adbc_driver_postgresql.dbapi</span>
+<span class="linenos">27</span>
+<span class="linenos">28</span><span class="n">uri</span> <span
class="o">=</span> <span class="n">os</span><span class="o">.</span><span
class="n">environ</span><span class="p">[</span><span
class="s2">"ADBC_POSTGRESQL_TEST_URI"</span><span class="p">]</span>
+<span class="linenos">29</span><span class="n">conn</span> <span
class="o">=</span> <span class="n">adbc_driver_postgresql</span><span
class="o">.</span><span class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span><span class="n">uri</span><span
class="p">)</span>
+</pre></div>
+</div>
+<p>We’ll create an example table to test.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">32</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">33</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"DROP TABLE IF EXISTS example"</span><span
class="p">)</span>
+<span class="linenos">34</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"CREATE TABLE example (ints INT, bigints
BIGINT)"</span><span class="p">)</span>
+<span class="linenos">35</span>
+<span class="linenos">36</span><span class="n">conn</span><span
class="o">.</span><span class="n">commit</span><span class="p">()</span>
+<span class="linenos">37</span>
+<span class="linenos">38</span><span class="k">assert</span> <span
class="n">conn</span><span class="o">.</span><span
class="n">adbc_get_table_schema</span><span class="p">(</span><span
class="s2">"example"</span><span class="p">)</span> <span
class="o">==</span> <span class="n">pyarrow</span><span class="o">.</span><span
class="n">schema</span><span class="p">(</span>
+<span class="linenos">39</span> <span class="p">[</span>
+<span class="linenos">40</span> <span class="p">(</span><span
class="s2">"ints"</span><span class="p">,</span> <span
class="s2">"int32"</span><span class="p">),</span>
+<span class="linenos">41</span> <span class="p">(</span><span
class="s2">"bigints"</span><span class="p">,</span> <span
class="s2">"int64"</span><span class="p">),</span>
+<span class="linenos">42</span> <span class="p">]</span>
+<span class="linenos">43</span><span class="p">)</span>
+<span class="linenos">44</span>
+<span class="linenos">45</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</section>
+<section id="list-catalogs-schemas-and-tables">
+<h2>List catalogs, schemas, and tables<a class="headerlink"
href="#list-catalogs-schemas-and-tables" title="Permalink to this
heading">#</a></h2>
+<p>Recipe source: <a class="reference external"
href="https://github.com/apache/arrow-adbc/blob/main/docs/source/python/recipe/postgresql_list_catalogs.py">postgresql_list_catalogs.py</a></p>
+<p>ADBC allows listing tables, catalogs, and schemas in the database.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">22</span><span
class="kn">import</span> <span class="nn">os</span>
+<span class="linenos">23</span>
+<span class="linenos">24</span><span class="kn">import</span> <span
class="nn">adbc_driver_postgresql.dbapi</span>
+<span class="linenos">25</span>
+<span class="linenos">26</span><span class="n">uri</span> <span
class="o">=</span> <span class="n">os</span><span class="o">.</span><span
class="n">environ</span><span class="p">[</span><span
class="s2">"ADBC_POSTGRESQL_TEST_URI"</span><span class="p">]</span>
+<span class="linenos">27</span><span class="n">conn</span> <span
class="o">=</span> <span class="n">adbc_driver_postgresql</span><span
class="o">.</span><span class="n">dbapi</span><span class="o">.</span><span
class="n">connect</span><span class="p">(</span><span class="n">uri</span><span
class="p">)</span>
+</pre></div>
+</div>
+<p>We’ll create an example table to look for.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">30</span><span
class="k">with</span> <span class="n">conn</span><span class="o">.</span><span
class="n">cursor</span><span class="p">()</span> <span class="k">as</span>
<span class="n">cur</span><span class="p">:</span>
+<span class="linenos">31</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"DROP TABLE IF EXISTS example"</span><span
class="p">)</span>
+<span class="linenos">32</span> <span class="n">cur</span><span
class="o">.</span><span class="n">execute</span><span class="p">(</span><span
class="s2">"CREATE TABLE example (ints INT, bigints
BIGINT)"</span><span class="p">)</span>
+<span class="linenos">33</span>
+<span class="linenos">34</span><span class="n">conn</span><span
class="o">.</span><span class="n">commit</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>The data is given as a PyArrow RecordBatchReader.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">37</span><span
class="n">objects</span> <span class="o">=</span> <span
class="n">conn</span><span class="o">.</span><span
class="n">adbc_get_objects</span><span class="p">(</span><span
class="n">depth</span><span class="o">=</span><span
class="s2">"all"</span><span class="p">)</span><span
class="o">.</span><span class="n">read_all</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>We’ll convert it to plain Python data for convenience.</p>
+<div class="highlight-default notranslate"><div
class="highlight"><pre><span></span><span class="linenos">40</span><span
class="n">objects</span> <span class="o">=</span> <span
class="n">objects</span><span class="o">.</span><span
class="n">to_pylist</span><span class="p">()</span>
+<span class="linenos">41</span><span class="n">catalog</span> <span
class="o">=</span> <span class="n">objects</span><span class="p">[</span><span
class="mi">0</span><span class="p">]</span>
+<span class="linenos">42</span><span class="k">assert</span> <span
class="n">catalog</span><span class="p">[</span><span
class="s2">"catalog_name"</span><span class="p">]</span> <span
class="o">==</span> <span class="s2">"postgres"</span>
+<span class="linenos">43</span>
+<span class="linenos">44</span><span class="n">db_schema</span> <span
class="o">=</span> <span class="n">catalog</span><span class="p">[</span><span
class="s2">"catalog_db_schemas"</span><span class="p">][</span><span
class="mi">0</span><span class="p">]</span>
+<span class="linenos">45</span><span class="k">assert</span> <span
class="n">db_schema</span><span class="p">[</span><span
class="s2">"db_schema_name"</span><span class="p">]</span> <span
class="o">==</span> <span class="s2">"public"</span>
+<span class="linenos">46</span>
+<span class="linenos">47</span><span class="n">tables</span> <span
class="o">=</span> <span class="n">db_schema</span><span
class="p">[</span><span class="s2">"db_schema_tables"</span><span
class="p">]</span>
+<span class="linenos">48</span><span class="n">example</span> <span
class="o">=</span> <span class="p">[</span><span class="n">table</span> <span
class="k">for</span> <span class="n">table</span> <span class="ow">in</span>
<span class="n">tables</span> <span class="k">if</span> <span
class="n">table</span><span class="p">[</span><span
class="s2">"table_name"</span><span class="p">]</span> <span
class="o">==</span> <span class="s2">"example"</span><span
class="p">]</span>
+<span class="linenos">49</span><span class="k">assert</span> <span
class="nb">len</span><span class="p">(</span><span
class="n">example</span><span class="p">)</span> <span class="o">==</span>
<span class="mi">1</span>
+<span class="linenos">50</span><span class="n">example</span> <span
class="o">=</span> <span class="n">example</span><span class="p">[</span><span
class="mi">0</span><span class="p">]</span>
+<span class="linenos">51</span>
+<span class="linenos">52</span><span class="k">assert</span> <span
class="n">example</span><span class="p">[</span><span
class="s2">"table_columns"</span><span class="p">][</span><span
class="mi">0</span><span class="p">][</span><span
class="s2">"column_name"</span><span class="p">]</span> <span
class="o">==</span> <span class="s2">"ints"</span>
+<span class="linenos">53</span><span class="k">assert</span> <span
class="n">example</span><span class="p">[</span><span
class="s2">"table_columns"</span><span class="p">][</span><span
class="mi">1</span><span class="p">][</span><span
class="s2">"column_name"</span><span class="p">]</span> <span
class="o">==</span> <span class="s2">"bigints"</span>
+<span class="linenos">54</span>
+<span class="linenos">55</span><span class="n">conn</span><span
class="o">.</span><span class="n">close</span><span class="p">()</span>
+</pre></div>
+</div>
+</section>
+</section>
+
+ </article>
+ </div>
+ <footer>
+
+ <div class="related-pages">
+ <a class="next-page" href="../../driver/installation.html">
+ <div class="page-info">
+ <div class="context">
+ <span>Next</span>
+ </div>
+ <div class="title">Installation</div>
+ </div>
+ <svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
+ </a>
+ <a class="prev-page" href="driver_manager.html">
+ <svg class="furo-related-icon"><use
href="#svg-arrow-right"></use></svg>
+ <div class="page-info">
+ <div class="context">
+ <span>Previous</span>
+ </div>
+
+ <div class="title">Driver Manager Recipes</div>
+
+ </div>
+ </a>
+ </div>
+ <div class="bottom-of-page">
+ <div class="left-details">
+ <div class="copyright">
+ Copyright © 2022, Apache Arrow Developers
+ </div>
+ Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a
class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
+
+ <a href="https://github.com/pradyunsg/furo">Furo</a>
+
+ </div>
+ <div class="right-details">
+
+ </div>
+ </div>
+
+ </footer>
+ </div>
+ <aside class="toc-drawer">
+
+
+ <div class="toc-sticky toc-scroll">
+ <div class="toc-title-container">
+ <span class="toc-title">
+ On this page
+ </span>
+ </div>
+ <div class="toc-tree-container">
+ <div class="toc-tree">
+ <ul>
+<li><a class="reference internal" href="#">PostgreSQL Recipes</a><ul>
+<li><a class="reference internal"
href="#authenticate-with-a-username-and-password">Authenticate with a username
and password</a></li>
+<li><a class="reference internal"
href="#create-append-to-a-table-from-an-arrow-table">Create/append to a table
from an Arrow table</a></li>
+<li><a class="reference internal"
href="#execute-a-statement-with-bind-parameters">Execute a statement with bind
parameters</a></li>
+<li><a class="reference internal" href="#get-the-arrow-schema-of-a-table">Get
the Arrow schema of a table</a></li>
+<li><a class="reference internal"
href="#list-catalogs-schemas-and-tables">List catalogs, schemas, and
tables</a></li>
+</ul>
+</li>
+</ul>
+
+ </div>
+ </div>
+ </div>
+
+
+ </aside>
+ </div>
+</div><script data-url_root="../../" id="documentation_options"
src="../../_static/documentation_options.js"></script>
+ <script src="../../_static/jquery.js"></script>
+ <script src="../../_static/underscore.js"></script>
+ <script
src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+ <script src="../../_static/doctools.js"></script>
+ <script src="../../_static/sphinx_highlight.js"></script>
+ <script src="../../_static/scripts/furo.js"></script>
+ <script src="../../_static/clipboard.min.js"></script>
+ <script src="../../_static/copybutton.js"></script>
+ <script src="../../_static/design-tabs.js"></script>
+
+<script async defer src="../../../version.js"></script></body>
+</html>
\ No newline at end of file
diff --git a/main/search.html b/main/search.html
index ce870e5d..59c00429 100644
--- a/main/search.html
+++ b/main/search.html
@@ -244,6 +244,11 @@
<li class="toctree-l3"><a class="reference internal"
href="python/api/adbc_driver_sqlite.html"><code class="docutils literal
notranslate"><span class="pre">adbc_driver_sqlite</span></code></a></li>
</ul>
</li>
+<li class="toctree-l2 has-children"><a class="reference internal"
href="python/recipe/index.html">Python Cookbook</a><input
class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6"
role="switch" type="checkbox"/><label for="toctree-checkbox-6"><div
class="visually-hidden">Toggle navigation of Python Cookbook</div><i
class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/driver_manager.html">Driver Manager Recipes</a></li>
+<li class="toctree-l3"><a class="reference internal"
href="python/recipe/postgresql.html">PostgreSQL Recipes</a></li>
+</ul>
+</li>
</ul>
</li>
</ul>
diff --git a/main/searchindex.js b/main/searchindex.js
index c09215ad..7145029a 100644
--- a/main/searchindex.js
+++ b/main/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["cpp/api/adbc", "cpp/api/adbc_driver_manager",
"cpp/api/index", "cpp/concurrency", "cpp/driver_manager", "cpp/index",
"development/contributing", "development/nightly", "development/releasing",
"driver/flight_sql", "driver/installation", "driver/jdbc", "driver/postgresql",
"driver/snowflake", "driver/sqlite", "driver/status", "faq",
"format/comparison", "format/specification", "format/versioning", "index",
"java/index", "python/api/adbc_driver_flightsql", "p [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["cpp/api/adbc", "cpp/api/adbc_driver_manager",
"cpp/api/index", "cpp/concurrency", "cpp/driver_manager", "cpp/index",
"development/contributing", "development/nightly", "development/releasing",
"driver/flight_sql", "driver/installation", "driver/jdbc", "driver/postgresql",
"driver/snowflake", "driver/sqlite", "driver/status", "faq",
"format/comparison", "format/specification", "format/versioning", "index",
"java/index", "python/api/adbc_driver_flightsql", "p [...]
\ No newline at end of file