[Python-checkins] gh-96168: Improve sqlite3 dict_factory example (#96457)

erlend-aasland webhook-mailer at python.org
Thu Sep 1 17:48:19 EDT 2022


https://github.com/python/cpython/commit/91f40f3f78d6016a283989e32ec3d1fb61bcebca
commit: 91f40f3f78d6016a283989e32ec3d1fb61bcebca
branch: main
author: Erlend E. Aasland <erlend.aasland at innova.no>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2022-09-01T23:47:59+02:00
summary:

gh-96168: Improve sqlite3 dict_factory example (#96457)

Co-authored-by: C.A.M. Gerlach <CAM.Gerlach at Gerlach.CAM>
Co-authored-by: Ezio Melotti <ezio.melotti at gmail.com>

files:
M Doc/library/sqlite3.rst

diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 7ac7162c2527..b188ca4127f5 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -601,25 +601,16 @@ Connection objects
 
       Example:
 
-      .. testcode::
-
-         def dict_factory(cursor, row):
-             d = {}
-             for idx, col in enumerate(cursor.description):
-                 d[col[0]] = row[idx]
-             return d
-
-         con = sqlite3.connect(":memory:")
-         con.row_factory = dict_factory
-         cur = con.execute("SELECT 1 AS a")
-         print(cur.fetchone()["a"])
-
-         con.close()
-
-      .. testoutput::
-         :hide:
+      .. doctest::
 
-         1
+         >>> def dict_factory(cursor, row):
+         ...     col_names = [col[0] for col in cursor.description]
+         ...     return {key: value for key, value in zip(col_names, row)}
+         >>> con = sqlite3.connect(":memory:")
+         >>> con.row_factory = dict_factory
+         >>> for row in con.execute("SELECT 1 AS a, 2 AS b"):
+         ...     print(row)
+         {'a': 1, 'b': 2}
 
       If returning a tuple doesn't suffice and you want name-based access to
       columns, you should consider setting :attr:`row_factory` to the



More information about the Python-checkins mailing list