<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>SQLAlchemy</title>
    <link>http://www.sqlalchemy.org/blog</link>
    <description>Announcements for SQLAlchemy</description>
    <pubDate>Sat, 27 Jun 2026 18:58:38 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>SQLAlchemy 2.1.0b3 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/06/27/sqlalchemy-2.1.0b3-released</link>
      <pubDate>Sat, 27 Jun 2026 15:45:02 EDT</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/06/27/sqlalchemy-2.1.0b3-released</guid>
      <description>SQLAlchemy 2.1.0b3 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>The third beta release of the <strong>SQLAlchemy 2.1</strong> series is now available.</p>
<p>Release 2.1.0b3 brings a focused set of new features, performance improvements,
and bug fixes.  With no major regressions reported against 2.1.0b2, we are
hoping this release will be the last beta before a <strong>final 2.1.0 release,
targeting end of summer 2026</strong>.</p>
<p>Highlights of this release include:</p>
<ul class="simple">
<li><strong>ORM Loading Performance Improvements</strong> - ORM result row fetching now
processes rows as plain tuples rather than constructing <tt class="docutils literal">Row</tt>
objects, since ORM loaders use position-based access and do not require
the <tt class="docutils literal">Row</tt> interface.  Additional optimizations were made to
<tt class="docutils literal">selectinload</tt> and <tt class="docutils literal">subqueryload</tt> result handling.
Benchmarks show a <strong>3-16% improvement</strong> in ORM entity load times depending
on query shape.  Thanks to Oliver Parker for this work.</li>
<li><strong>selectinload omit_join for Many-to-Many</strong> - The <tt class="docutils literal">selectinload</tt>
loader strategy now applies the <tt class="docutils literal">omit_join</tt> optimization automatically
for many-to-many non-self-referential relationships, selecting from the
secondary (association) table directly rather than joining back to the
parent entity, reducing the number of JOINs in the emitted SELECT.</li>
<li><strong>SQLite JSONB Type</strong> - A new <tt class="docutils literal">JSONB</tt> type supports
SQLite's binary JSON storage format, available as of SQLite version 3.45.0.
Values are stored and retrieved using the <tt class="docutils literal">jsonb()</tt> / <tt class="docutils literal">json()</tt> SQL
functions while Python-side behavior remains identical to
<tt class="docutils literal">JSON</tt>.  Thanks to Shamil Abdulaev.</li>
<li><strong>selectinload chunksize Parameter</strong> - A new <tt class="docutils literal">chunksize</tt> parameter on
<tt class="docutils literal">selectinload</tt> allows configuring the number of primary keys sent per IN
clause when loading relationships, giving applications control over query
size for very large result sets.  Thanks to bekapono.</li>
<li><strong>Delete.using() for Multi-Table DELETE</strong> - A new <tt class="docutils literal">Delete.using()</tt>
method allows explicit FROM expressions to be rendered in backend-specific
multiple-table DELETE forms, including MySQL/MariaDB <tt class="docutils literal">DELETE .. USING</tt>.
Thanks to cjc0013.</li>
<li><strong>SQL Server Bulk Reflection</strong> - The SQL Server dialect now implements
native multi-table reflection methods, issuing a single bulk query per
object type against the <tt class="docutils literal">sys.*</tt> catalog views rather than a per-table
round trip loop, matching the pattern already used by the PostgreSQL and
Oracle dialects.  Thanks to Gaurav Sharma.</li>
<li><strong>Session execution_options for Unit of Work Core SQL</strong> - Session-level
<tt class="docutils literal">execution_options</tt> now take effect for Core-level SQL emitted by unit
of work operations, in addition to ORM statement executions.  This allows
options such as <tt class="docutils literal">schema_translate_map</tt> to be applied to a <tt class="docutils literal">Session</tt>
globally.</li>
</ul>
<p>SQLAlchemy 2.1 includes <strong>over 90 individual documented changes</strong> across all
betas, so be sure to check out not just the <a class="reference external" href="https://docs.sqlalchemy.org/en/21/changelog/migration_21.html">What's New in SQLAlchemy 2.1?</a> migration
guide, but the detailed changelog at <a class="reference external" href="/changelog/CHANGES_2_1_0b3">Changelog</a>
as well.</p>
<p>SQLAlchemy 2.1.0b3 by naming convention is a beta release, so only installs
with pip if the <tt class="docutils literal"><span class="pre">--pre</span></tt> flag is included. Links to pypi for
SQLAlchemy 2.1.0b3 are available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.51 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/06/15/sqlalchemy-2.0.51-released</link>
      <pubDate>Mon, 15 Jun 2026 15:45:02 EDT</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/06/15/sqlalchemy-2.0.51-released</guid>
      <description>SQLAlchemy 2.0.51 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.51 is now available.</p>
<p>Links to the detailed changelog for 2.0.51 is at <a class="reference external" href="/changelog/CHANGES_2_0_51">Changelog</a>.</p>
<p>SQLAlchemy 2.0.51 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.50 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/05/24/sqlalchemy-2.0.50-released</link>
      <pubDate>Sun, 24 May 2026 15:45:02 EDT</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/05/24/sqlalchemy-2.0.50-released</guid>
      <description>SQLAlchemy 2.0.50 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.50 is now available.</p>
<p>Links to the detailed changelog for 2.0.50 is at <a class="reference external" href="/changelog/CHANGES_2_0_50">Changelog</a>.</p>
<p>SQLAlchemy 2.0.50 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.1.0b2 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/04/16/sqlalchemy-2.1.0b2-released</link>
      <pubDate>Thu, 16 Apr 2026 15:45:02 EDT</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/04/16/sqlalchemy-2.1.0b2-released</guid>
      <description>SQLAlchemy 2.1.0b2 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>The second beta release of the <strong>SQLAlchemy 2.1</strong> series is now available.</p>
<p>Release 2.1.0b2 adds new support for the <strong>mssql-python</strong> DBAPI, a driver
for Microsoft SQL Server produced directly by Microsoft.   A few other features
and bug fixes are also introduced.</p>
<p>Depending on feedback for release 2.1.0b2, the next release may be 2.1.0 final,
unless further issues that can benefit from beta testing are added.</p>
<p>SQLAlchemy 2.1 includes <strong>over 90 individual documented changes</strong>, so be sure
to check out not just the <a class="reference external" href="https://docs.sqlalchemy.org/en/21/changelog/migration_21.html">What's New in SQLAlchemy 2.1?</a> migration
guide, but the detailed changelog at <a class="reference external" href="/changelog/CHANGES_2_1_0b2">Changelog</a>
as well.</p>
<p>SQLAlchemy 2.1.0b2 by naming convention is a beta release, so only installs
with pip if the <tt class="docutils literal"><span class="pre">--pre</span></tt> flag is included. Links to pypi for
SQLAlchemy 2.1.0b2 are available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.49 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/04/03/sqlalchemy-2.0.49-released</link>
      <pubDate>Fri, 03 Apr 2026 15:45:02 EDT</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/04/03/sqlalchemy-2.0.49-released</guid>
      <description>SQLAlchemy 2.0.49 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.49 is now available.</p>
<p>Links to the detailed changelog for 2.0.49 is at <a class="reference external" href="/changelog/CHANGES_2_0_49">Changelog</a>.</p>
<p>SQLAlchemy 2.0.49 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.48 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/03/02/sqlalchemy-2.0.48-released</link>
      <pubDate>Mon, 02 Mar 2026 15:45:02 EST</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/03/02/sqlalchemy-2.0.48-released</guid>
      <description>SQLAlchemy 2.0.48 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.48 is now available.</p>
<p>Release 2.0.48 fixes a single potential concurrency issue which could impact
custom &quot;on connect&quot; routines, particularly those used by the SQL Server
dialect.</p>
<p>Links to the detailed changelog for 2.0.48 is at <a class="reference external" href="/changelog/CHANGES_2_0_48">Changelog</a>.</p>
<p>SQLAlchemy 2.0.48 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.47 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/02/24/sqlalchemy-2.0.47-released</link>
      <pubDate>Tue, 24 Feb 2026 15:45:02 EST</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/02/24/sqlalchemy-2.0.47-released</guid>
      <description>SQLAlchemy 2.0.47 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.47 is now available.</p>
<p>Links to the detailed changelog for 2.0.47 is at <a class="reference external" href="/changelog/CHANGES_2_0_47">Changelog</a>.</p>
<p>SQLAlchemy 2.0.47 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.46 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/01/21/sqlalchemy-2.0.46-released</link>
      <pubDate>Wed, 21 Jan 2026 15:45:02 EST</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/01/21/sqlalchemy-2.0.46-released</guid>
      <description>SQLAlchemy 2.0.46 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.46 is now available.</p>
<p>Release 2.0.46 includes typing improvements for ORM mapped classes and aliased
entities in result row mappings, several PostgreSQL dialect fixes including
corrections to JSONB operators and improved unicode support in foreign key
reflection, and enhancements to the MariaDB, SQLite, and MSSQL dialects.</p>
<p>Links to the detailed changelog for 2.0.46 is at <a class="reference external" href="/changelog/CHANGES_2_0_46">Changelog</a>.</p>
<p>SQLAlchemy 2.0.46 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.1.0b1 Released</title>
      <link>http://www.sqlalchemy.org/blog/2026/01/21/sqlalchemy-2.1.0b1-released</link>
      <pubDate>Wed, 21 Jan 2026 15:45:02 EST</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2026/01/21/sqlalchemy-2.1.0b1-released</guid>
      <description>SQLAlchemy 2.1.0b1 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>The first beta release of the <strong>SQLAlchemy 2.1</strong> series is now available.</p>
<p>Nearly two years in development, the 2.1 series builds upon the new Python
typing-oriented architecture of SQLAlchemy 2.0, introducing a range of
enhancements and new capabilities across both Core and ORM components, with an
emphasis on newer Python idioms such as dataclasses, improved pep-484 typing,
template strings, and continued accommodations for Python free threading.</p>
<p>Key improvements in SQLAlchemy 2.1 include:</p>
<ul class="simple">
<li><strong>Python 3.14 Template String Support</strong> - A new <tt class="docutils literal">tstring()</tt> construct
works similarly to the <tt class="docutils literal">text()</tt> construct, but works with the new
<tt class="docutils literal">t''</tt> syntax added in Python 3.14+, allowing for automatic generation
of bound parameters from a fully inline SQL string expression.</li>
<li><strong>CREATE VIEW and CREATE TABLE AS Support</strong> - New DDL constructs enable
creation of views and table-as-select operations</li>
<li><strong>pep-646 typing for SQL SELECT statements, result sets, rows</strong> - The <tt class="docutils literal">Tuple[]</tt>
seen in type annotations for selectable statements and results has been
replaced by the use of pep-646 <tt class="docutils literal">Unpack</tt> directly, representing heterogeneous
rows and supporting constructs directly without the need to manually
unpack results from a tuple for typing of individual unpacked values to work.</li>
<li><strong>Refined Dataclass Mapping</strong> - ORM mapped dataclasses no longer populate
implicit defaults in <tt class="docutils literal">__dict__</tt>, resolving workflow issues where foreign
key values would incorrectly override relationship attributes</li>
<li><strong>Default driver updates for PostgreSQL, Oracle</strong> - The default driver for
<tt class="docutils literal"><span class="pre">postgresql://</span></tt> URLs is now <tt class="docutils literal">psycopg</tt>, replacing <tt class="docutils literal">psycopg2</tt>, and the
default driver for <tt class="docutils literal"><span class="pre">oracle://</span></tt> URLs is now <tt class="docutils literal">oracledb</tt>, replacing
<tt class="docutils literal">cx_oracle</tt>.  This is the first release in SQLAlchemy's history to revise
these default drivers.</li>
<li><strong>Support for monotonic server side functions such as PostgreSQL's uuidv7()
in batched INSERTs</strong> - SQLAlchemy's &quot;insertmanyvalues&quot; feature introduced
in version 2.0 allowed dramatic improvements for INSERT statements as used
by the ORM, when primary key values needed to be fetched from newly inserted
rows without executing row-at-a-time.   Release 2.1 adds support for the use
of monotonically increasing server side functions to be integrated within
this system, with PG's uuidv7() construct as the current example.</li>
<li><strong>Greenlet is a fully optional dependency</strong> - SQLAlchemy's asyncio support
in version 2.1 remains dependent on greenlet to switch between asyncio and
synchronous internal logic.   However, as greenlet continues to have sporadic
compatibility issues when new Python versions are released, it no longer
installs automatically and must be installed separately, typically using the
<tt class="docutils literal">sqlalchemy[asyncio]</tt> target.   This change also supports Python free
threading, as greenlet as of this writing is not yet compatible with
free-threaded Python builds</li>
</ul>
<p>SQLAlchemy 2.1 includes <strong>over 90 individual documented changes</strong>, so be sure
to check out not just the <a class="reference external" href="https://docs.sqlalchemy.org/en/21/changelog/migration_21.html">What's New in SQLAlchemy 2.1?</a> migration
guide, but the detailed changelog at <a class="reference external" href="/changelog/CHANGES_2_1_0b1">Changelog</a>
as well.</p>
<p>SQLAlchemy 2.1.0b1 by naming convention is a beta release, so only installs
with pip if the <tt class="docutils literal"><span class="pre">--pre</span></tt> flag is included. Links to pypi for
SQLAlchemy 2.1.0b1 are available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>SQLAlchemy 2.0.45 Released</title>
      <link>http://www.sqlalchemy.org/blog/2025/12/09/sqlalchemy-2.0.45-released</link>
      <pubDate>Tue, 09 Dec 2025 15:45:02 EST</pubDate>
      <category><![CDATA[Uncategorized]]></category>
      <guid isPermaLink="true">http://www.sqlalchemy.org/blog/2025/12/09/sqlalchemy-2.0.45-released</guid>
      <description>SQLAlchemy 2.0.45 Released</description>
      <content:encoded><![CDATA[<div class="document">
<p>SQLAlchemy 2.0.45 is now available.</p>
<p>Links to the detailed changelog for 2.0.45 is at <a class="reference external" href="/changelog/CHANGES_2_0_45">Changelog</a>.</p>
<p>SQLAlchemy 2.0.45 is available on the <a class="reference external" href="/download.html">Download Page</a>.</p>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
