Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
56518ec
build pipeline publishing pdb as artifacts
bewithgaurav Jun 25, 2025
00a2e00
added a job to publish in dummy release pipeline
bewithgaurav Jun 25, 2025
8e80e7d
fixed pdb dir
bewithgaurav Jun 25, 2025
0637928
fixed pdb ext
bewithgaurav Jun 25, 2025
e2a1037
fixed parameters and made them into env
bewithgaurav Jun 25, 2025
632f13b
fixed input azureSubscription
bewithgaurav Jun 25, 2025
080af4f
fixed input azureSubscription as mssql-python
bewithgaurav Jun 25, 2025
06caf7e
fixed input azureSubscription as mssql-python-service
bewithgaurav Jun 25, 2025
1e7b296
fix download pipeline artifact
bewithgaurav Jun 25, 2025
026f9a8
rename SymbolsArtifactName
bewithgaurav Jun 25, 2025
c6372d1
changed symbolsArtifactName
bewithgaurav Jun 25, 2025
e219f61
Merge branch 'main' into bewithgaurav/publish_symbols
bewithgaurav Jul 10, 2025
640bf3a
code changes from review
bewithgaurav Jul 10, 2025
dab82e8
add symbol generation and copy step in dummy release
bewithgaurav Jul 10, 2025
3d68d94
syntax
bewithgaurav Jul 10, 2025
b987d0d
use onebranch temp
bewithgaurav Jul 10, 2025
bfab7cf
use onebranch temp
bewithgaurav Jul 10, 2025
115b262
use onebranch temp
bewithgaurav Jul 10, 2025
864a7ff
use onebranch template - change pool to windows
bewithgaurav Jul 10, 2025
4faedbc
use onebranch template - remove globalSdl
bewithgaurav Jul 10, 2025
4421646
remove unnecessary step
bewithgaurav Jul 10, 2025
0639734
Merged PR 5852: SYNC: Github main to ADO main
bewithgaurav Jul 25, 2025
2d0265f
Merge branch 'main' into bewithgaurav/publish_symbols
bewithgaurav Jul 30, 2025
7f2d80b
Merge branch 'bewithgaurav/publish_symbols' of https://github.com/mic…
bewithgaurav Jul 30, 2025
3069fcb
conflicts
bewithgaurav Jul 30, 2025
01b7b3a
conflicts
bewithgaurav Jul 30, 2025
4624477
sync to main
bewithgaurav Jul 30, 2025
285dc28
added resources in pipeline
bewithgaurav Jul 30, 2025
99128d6
added variables in pipeline
bewithgaurav Jul 30, 2025
b7d923a
added variables in pipeline
bewithgaurav Jul 30, 2025
1a5bf33
added variables in pipeline
bewithgaurav Jul 30, 2025
06a505e
Merged PR 5874: SYNC: Templates and Github Commit History
bewithgaurav Jul 31, 2025
5328b65
ADO work item in contributing
bewithgaurav Aug 4, 2025
4957db1
Merged PR 5875: CHORE: Change Dummy Release Pipeline to 1ES Governed …
bewithgaurav Aug 6, 2025
ec764d1
Merged PR 6131: SYNC: Github main to ADO main
bewithgaurav Sep 30, 2025
6fd72e6
Merged PR 6157: SYNC: Github main to ADO main
bewithgaurav Oct 6, 2025
6d8d8ff
Merged PR 6156: CHORE: OneBranch Pipelines - Build Pipeline
bewithgaurav Oct 7, 2025
587e68d
Merged PR 6211: FIX: Build Pipeline Corrections
bewithgaurav Oct 7, 2025
7c1c428
Merged PR 6233: FEAT: Build Pipeline OneBranch Migration
bewithgaurav Oct 9, 2025
9147380
Merged PR 6242: FIX: Build Pipeline Symbol Publishing
bewithgaurav Oct 9, 2025
f896b68
Merge pull request 6209 from invBootstrap into main
Oct 9, 2025
9cfb2d7
Merged PR 6245: FIX: Build Pipeline - List signed files
bewithgaurav Oct 9, 2025
7005bb5
Merged PR 6247: FIX: Build Pipeline - Use OneBranch Signing
bewithgaurav Oct 9, 2025
df7b770
Merged PR 6248: FIX: Commented ESRP CodeSign Task
bewithgaurav Oct 9, 2025
9395287
Merged PR 6250: FIX: Build Release Pipeline - Removed Symbols Publishing
bewithgaurav Oct 15, 2025
ce7232d
Merged PR 6317: FEAT: Migrate Official and Dummy Release Pipelines
bewithgaurav Oct 17, 2025
335b5b7
Merged PR 6387: SYNC: Github main to ADO main
bewithgaurav Nov 10, 2025
708dffd
Merged PR 6424: Add the baseline and suppression file to guide Guardian
saurabh500 Nov 11, 2025
3fb8ab2
Merged PR 6426: SYNC: GH main to ADO main
bewithgaurav Nov 11, 2025
7302bf1
Merged PR 6388: FIX: Use .gdnsuppress and .gdnbaseline to suppress fa…
bewithgaurav Nov 11, 2025
5499a65
Merged PR 6427: FIX: Disable BinSkim for Ubuntu and macOS
bewithgaurav Nov 12, 2025
fd2bf7f
Merged PR 6457: SYNC: GH to ADO Main
bewithgaurav Nov 14, 2025
30e8363
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 14, 2025
62972d3
Merged PR 6456: FEAT: Download Windows Python ARM64 Libs from Nuget d…
bewithgaurav Nov 14, 2025
e697aee
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 14, 2025
bc79a97
Merged PR 6461: CHORE: Build Pipeline Modernization - Multi-Platform …
bewithgaurav Nov 14, 2025
3d5d0e8
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 14, 2025
c93149a
Merged PR 6462: RELEASE: 0.14.0
bewithgaurav Nov 14, 2025
7e83b9f
Merge branch 'main' of https://github.com/microsoft/mssql-python
bewithgaurav Nov 14, 2025
76a47a6
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 14, 2025
cbe1816
CHORE: Clean Up Release Pipelines
bewithgaurav Nov 14, 2025
1818738
Merged PR 6463: CHORE: Clean Up Dummy & Release Pipelines
bewithgaurav Nov 15, 2025
a709bcf
FIX: Dummy Release is NonOfficial
bewithgaurav Nov 15, 2025
4466915
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 15, 2025
545e05d
Merged PR 6466: FIX: Dummy Release should be NonOfficial By Default
bewithgaurav Nov 15, 2025
8630f9c
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 15, 2025
a92f643
Merge branch 'main' of https://sqlclientdrivers.visualstudio.com/mssq…
bewithgaurav Nov 17, 2025
c0b38d4
Merge branch 'main' of https://github.com/microsoft/mssql-python
bewithgaurav Nov 17, 2025
30e79e0
RELEASE: 1.0.0
bewithgaurav Nov 18, 2025
2713de4
Merge branch 'main' of https://github.com/microsoft/mssql-python into…
bewithgaurav Nov 18, 2025
ace3a6f
Merge branch 'bewithgaurav/official-release-pipeline' into release/1.0.0
bewithgaurav Nov 18, 2025
75bb4c9
Merge branch 'main' into release/1.0.0
bewithgaurav Nov 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions OneBranchPipelines/build-release-package-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ parameters:
arch: 'x64'
- pyVer: '313'
arch: 'x64'
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
# arch: 'x64'
- pyVer: '314'
arch: 'x64'
# ARM64 builds (4 versions: 3.11-3.14)
# 3.10 excluded due to limited ARM64 support
- pyVer: '311'
Expand All @@ -105,8 +105,8 @@ parameters:
arch: 'arm64'
- pyVer: '313'
arch: 'arm64'
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
# arch: 'arm64'
- pyVer: '314'
arch: 'arm64'

# macOS Configuration Matrix
# Each entry creates separate stage: MacOS_py<pyVer>
Expand All @@ -120,7 +120,7 @@ parameters:
- pyVer: '311'
- pyVer: '312'
- pyVer: '313'
# - pyVer: '314' # Life of π: Unfolding in v1.0.0
- pyVer: '314'

# Linux Configuration Matrix
# Each entry creates ONE stage that builds ALL Python versions (3.10-3.14)
Expand Down Expand Up @@ -440,17 +440,17 @@ extends:
- Win_py311_x64
- Win_py312_x64
- Win_py313_x64
# - Win_py314_x64 # Life of π: Unfolding in v1.0.0
- Win_py314_x64
- Win_py311_arm64
- Win_py312_arm64
- Win_py313_arm64
# - Win_py314_arm64 # Life of π: Unfolding in v1.0.0
- Win_py314_arm64
# macOS dependencies (5 stages)
- MacOS_py310
- MacOS_py311
- MacOS_py312
- MacOS_py313
# - MacOS_py314 # Life of π: Unfolding in v1.0.0
- MacOS_py314
# Linux dependencies (4 stages)
- Linux_manylinux_x86_64
- Linux_manylinux_aarch64
Expand Down
2 changes: 1 addition & 1 deletion OneBranchPipelines/stages/build-linux-single-stage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ stages:
docker exec build-$(LINUX_TAG)-$(ARCH) $SHELL_EXE -lc 'mkdir -p /workspace/dist'

# Loop through all Python versions: build wheel -> test wheel -> repeat
for PYBIN in cp310 cp311 cp312 cp313; do # cp314: Life of π: Unfolding in v1.0.0
for PYBIN in cp310 cp311 cp312 cp313 cp314; do
echo ""
echo "====================================================="
echo "Building and testing $PYBIN on $(LINUX_TAG)/$(ARCH)"
Expand Down
70 changes: 28 additions & 42 deletions PyPI_Description.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,51 @@
# mssql-python

mssql-python is a new first-party SQL Server driver for Python that has all of the benefits of a fresh start while preserving a familiar experience for developers.

# General Availability Release
mssqlpython is now Generally Available (GA) as Microsoft’s official Python driver for SQL Server, Azure SQL, and SQL databases in Fabric. This release delivers a production‑ready, high‑performance, and developer‑friendly experience.
## What makes mssql-python different?

### Powered by DDBC – Direct Database Connectivity

Most Python SQL Server drivers, including pyodbc, route calls through the Driver Manager, which has slightly different implementations across Windows, macOS, and Linux. This results in inconsistent behavior and capabilities across platforms. Additionally, the Driver Manager must be installed separately, creating friction for both new developers and when deploying applications to servers.

At the heart of the driver is DDBC (Direct Database Connectivity) — a lightweight, high-performance C++ layer that replaces the platform’s Driver Manager.

At the heart of the mssql-python driver is DDBC (Direct Database Connectivity) — a lightweight, high-performance C++ layer that replaces the platform’s Driver Manager.
Key Advantages:

- Provides a consistent, cross-platform backend that handles connections, statements, and memory directly.
- Interfaces directly with the native SQL Server drivers.
- Integrates with the same TDS core library that powers the ODBC driver.

### Why is this architecture important?

By simplifying the architecture, DDBC delivers:

- Consistency across platforms
- Lower function call overhead
- Zero external dependencies on Windows (`pip install mssql-python` is all you need)
- Full control over connections, memory, and statement handling

### Built with PyBind11 + Modern C++ for Performance and Safety

To expose the DDBC engine to Python, mssql-python uses PyBind11 – a modern C++ binding library, instead of ctypes. With ctypes, every call between Python and the ODBC driver involved costly type conversions, manual pointer management, resulting in slow and potentially unsafe code.
To expose the DDBC engine to Python, mssql-python uses PyBind11 – a modern C++ binding library.

PyBind11 provides:

- Native-speed execution with automatic type conversions
- Memory-safe bindings
- Clean and Pythonic API, while performance-critical logic remains in robust, maintainable C++.

## Public Preview Release

We are currently in **Public Preview**.

## What's new in v0.14.0


## What's new in v1.0.0

### New Features
- **50-60% Faster Fetching:** Major optimizations including direct UTF-16 decoding, Python C API usage, and cached converters deliver dramatic performance gains for large result sets (100K+ rows), with **1.4-1.7× improvement** for very large datasets.
- **Connection String Validation:** Intelligent parser with allowlist validation, synonym normalization, and clear error messages for malformed strings. **Breaking change:** Unknown parameters now raise errors instead of being silently ignored.
- **Enhanced DECIMAL Precision:** Increased precision support from 15 to 38 digits (SQL Server maximum) with proper binary representation for high-precision calculations.
- **Comprehensive Logging:** Unified Python-C++ logging framework with `setup_logging()` API for detailed diagnostics with zero overhead when disabled.
- **Connection Attribute Control:** New `Connection.set_attr()` method for fine-grained control over ODBC connection attributes, isolation levels, and timeouts (pyodbc-compatible API).
- **XML Data Type:** Comprehensive support for SQL Server `XML` type, including efficient streaming for large documents.
- **DECIMAL Scientific Notation:** Improved handling of decimal values in scientific notation to prevent SQL Server conversion errors.

### Bug Fixes
- **Access Token Management:** Fixed Microsoft Entra ID authentication token handling to eliminate corruption in concurrent scenarios.
- **Decimal executemany Fix:** Resolved type inference issues when batch inserting Decimal values.

⚠️ **Breaking Change:** Connection string validation now raises `ConnectionStringParseError` for unknown/misspelled parameters. Review connection strings before upgrading.


- *Python 3.14 support* - ensuring compatibility with the latest Python ecosystem.
- *GA stability* - hardened release engineering, expanded test coverage, and compliance checks for enterprise readiness.

For more information, please visit the project link on Github: https://github.com/microsoft/mssql-python

If you have any feedback, questions or need support please mail us at [email protected].

## What's Next

As we continue to develop and refine the driver, you can expect regular updates that will introduce new features, optimizations, and bug fixes. We encourage you to contribute, provide feedback and report any issues you encounter, as this will help us improve the driver ahead of General Availability.
As we continue to refine the driver and add new features, you can expect regular updates, optimizations, and bug fixes. We encourage you to contribute, provide feedback and report any issues you encounter, as this will help us improve the driver.
3 changes: 3 additions & 0 deletions mssql_python/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
# Import settings from helpers to avoid circular imports
from .helpers import Settings, get_settings, _settings, _settings_lock

# Driver version
__version__ = "1.0.0"

# Exceptions
# https://www.python.org/dev/peps/pep-0249/#exceptions

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def finalize_options(self):

setup(
name='mssql-python',
version='0.14.0',
version='1.0.0',
description='A Python library for interacting with Microsoft SQL Server',
long_description=open('PyPI_Description.md', encoding='utf-8').read(),
long_description_content_type='text/markdown',
Expand Down
Loading