Skip to content

Commit

Permalink
gh-96168: Improve sqlite3 dict_factory example (GH-96457)
Browse files Browse the repository at this point in the history
Co-authored-by: C.A.M. Gerlach <[email protected]>
Co-authored-by: Ezio Melotti <[email protected]>
(cherry picked from commit 91f40f3)

Co-authored-by: Erlend E. Aasland <[email protected]>
  • Loading branch information
miss-islington and Erlend E. Aasland authored Sep 1, 2022
1 parent 2ecc195 commit bbcb03e
Showing 1 changed file with 9 additions and 18 deletions.
27 changes: 9 additions & 18 deletions Doc/library/sqlite3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -546,25 +546,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
Expand Down

0 comments on commit bbcb03e

Please sign in to comment.