# Psycopg 3.3.0 - Product: Psycopg (https://whatsnew.fyi/product/psycopg) - Vendor: Psycopg - Date: 2025-12-01 - Version: 3.3.0 - Original notes: https://pypi.org/project/psycopg/3.3.0/ - Permalink: https://whatsnew.fyi/product/psycopg/releases/3.3.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Add template strings queries - **added** — Enable adaptation of Python objects to PostgreSQL composites and back even if they are not sequences or if they take keyword arguments - **changed** — Cursors are now iterators, not just iterables, allowing next(cur) or anext(cur) to be called - **added** — Add Cursor.set_result() and Cursor.results() to move across the result sets of queries executed through executemany() or execute() with multiple statements - **added** — Add Transaction status to report the status during and after a transaction() block - **changed** — Allow to change loaders using register_loader() on Cursor.adapters after a query result has been already returned - **added** — Add pq.PGconn.used_gssapi attribute and Capabilities.has_used_gssapi() function - **added** — Add ConnectionInfo.full_protocol_version attribute and Capabilities.has_full_protocol_version() function - **changed** — Disable default GSSAPI preferential connection in the binary package - **removed** — Drop support for Python 3.8 and 3.9 New top-level features - Add template strings queries (ticket #1054). - More flexible composite adaptation: it is now possible to adapt Python objects to PostgreSQL composites and back even if they are not sequences or if they take keyword arguments (ticket #932, ticket #1202). - Cursors are now iterators, not just iterables. This means you can call next(cur) or anext(cur), which is useful as a type-safe expression (ticket #1064). - Add Cursor.set_result() and Cursor.results() to move across the result sets of queries executed though executemany() or execute() with multiple statements (tickets #1080, #1170). - Add Transaction status to report the status during and after a transaction() block (ticket #969). - Allow to change loaders using register_loader() on Cursor.adapters after a query result has been already returned (ticket #884). New libpq wrapper features - Add pq.PGconn.used_gssapi attribute and Capabilities.has_used_gssapi() function (ticket #1138). - Add ConnectionInfo.full_protocol_version attribute, Capabilities.has_full_protocol_version() function (ticket #1079). Other changes - Disable default GSSAPI preferential connection in the binary package (ticket #1136). Warning Please explicitly set the gssencmode connection parameter or the PGGSSENCMODE environment variable to interact reliably with the GSSAPI. - Drop support for Python 3.8 (ticket #976) and 3.9 (ticket #1056).