We released mssql-python 1.16.0, Microsoft’s Python driver for SQL Server and Azure SQL. This release gives developers more ways to install the driver, adds support for Python 3.15, and improves common fetch workloads.
Python 3.15 is supported. Prebuilt wheels are available across supported Windows, Linux, and macOS environments, including x64 and ARM64 builds. If you’re moving an application to Python 3.15:
pip install --upgrade mssql-python
There’s now an official Conda package. For teams that manage Python environments with Conda, version 1.16.0 is the first release on the Microsoft channel:
conda install -c microsoft mssql-python
The Conda package includes the Python bindings and matching native runtimes in one environment-managed package. On macOS, encrypted connections still require system OpenSSL; see the package details before setting up a new environment.
Rows are easier to use in mapping-based code. A fetched row now exposes a read-only row._mapping view, so you can access column names and convert a row to a dictionary without pairing values with cursor.description yourself:
record = dict(row._mapping)
The release also reduces overhead in row construction, batch fetching, temporal-value conversion, and positional row access. These are improvements to familiar operations such as fetchone(), fetchmany(), and fetchall()—not a change to how you write queries.
For those that like to try new things, 1.16.0 adds an opt-in Rust-based mssql-odbc provider. Our Microsoft ODBC Driver 18 based core remains the default, so existing applications do not switch providers when they upgrade. In our testing, we're seeing some nice performance bumps.
Several reliability fixes round out the release. Pooled connections are cleaned before reuse; Windows shutdown avoids a late native access violation; and bulk copy handles short positive timeouts and SQL identifiers more safely. Unsupported setencoding() requests now raise a warning rather than being silently ignored.
Get started from PyPI or the Microsoft Conda channel.
For the full list of changes, see the 1.16.0 release notes.