{"id":10080,"date":"2025-07-14T03:41:51","date_gmt":"2025-07-14T11:41:51","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/python\/?p=10080"},"modified":"2025-07-30T02:23:01","modified_gmt":"2025-07-30T10:23:01","slug":"announcing-full-cross-platform-support-for-the-mssql-python-driver","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/python\/announcing-full-cross-platform-support-for-the-mssql-python-driver\/","title":{"rendered":"Announcing Full Cross-Platform Support for the mssql-python Driver"},"content":{"rendered":"<p><a href=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2025\/07\/c1014e61-a66d-4807-ab58-655671044f49.png\"><img decoding=\"async\" class=\"aligncenter wp-image-5513 size-large\" src=\"https:\/\/devblogs.microsoft.com\/azure-sql\/wp-content\/uploads\/sites\/56\/2025\/07\/c1014e61-a66d-4807-ab58-655671044f49-1024x519.png\" alt=\"c1014e61 a66d 4807 ab58 655671044f49 image\" width=\"1024\" height=\"519\" \/><\/a><\/p>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">After the successful release of <a href=\"https:\/\/techcommunity.microsoft.com\/blog\/sqlserver\/announcing-the-public-preview-of-mssql-python\/4419545\">Public Preview<\/a> of mssql-python driver, we\u2019re thrilled to announce a major milestone for the <strong>mssql-python<\/strong> driver: <strong>full support for all three major operating systems\u2014Windows, macOS, and Linux<\/strong>. This release marks a significant leap forward in our mission to provide seamless, performant, and Pythonic connectivity to Microsoft SQL Server and the Azure SQL family.\u00a0<\/span><\/p>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Try it here: <a href=\"https:\/\/github.com\/microsoft\/mssql-python\">mssql-python<\/a>\u00a0<\/span><\/p>\n<p><div class=\"alert alert-info\">We invite Python community to join us and contribute in shaping the future of <a href=\"https:\/\/github.com\/microsoft\/mssql-python\">Python connectivity with SQL Server<\/a>! <\/div><\/p>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Linux Joins the Party\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">With this release, Linux support is officially live, completing our cross-platform vision. Whether you&#8217;re developing on <strong><em>Ubuntu, Red Hat or Debian<\/em><\/strong>, the mssql-python driver now offers native compatibility and a streamlined installation experience. This was made possible through deep integration work and iterative testing across distros. <\/span><\/p>\n<p><div class=\"alert alert-primary\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Info\"><\/i><strong><strong>Note:<\/strong><\/strong><\/p><\/p>\n<ul>\n<li>Support for other distros (Alpine and SUSE Linux) is going to be released soon.<\/li>\n<li>Support for server editions of Linux OSs will also be releasing soon!<\/div><\/li>\n<\/ul>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Connection Pooling for All Platforms\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">We\u2019ve also rolled out <strong>Connection Pooling<\/strong> support across Windows, macOS, and Linux. This feature dramatically <strong>improves performance and scalability<\/strong> by reusing active database connections. It\u2019s enabled by default and has already shown significant gains in internal benchmarks.\u00a0<\/span><\/p>\n<p><div class=\"alert alert-primary\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Info\"><\/i><strong><strong>Important:<\/strong><\/strong><\/p><em>Our latest performance benchmark results show mssql-python outperforming pyodbc by up to 2.2\u00d7 across core SQL operations, fetch patterns, and connection pooling\u2014stay tuned for a deep dive into the numbers and what\u2019s driving this performance leap in our upcoming blogs!<\/em> <\/div><\/p>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>EntraID Support for MacOS and Linux<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">EntraID authentication is now fully supported on MacOS and Linux but with certain limitations as mentioned in the table:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Authentication Method<\/strong><\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>macOS\/Linux Support<\/strong><\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Notes<\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryPassword<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">\u2705 Yes<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Username\/password-based authentication<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryInteractive<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">\u274c No<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Only works on Windows<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryMSI (Managed Identity)<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">\u2705 Yes<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">For Azure VMs\/containers with managed identity<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryServicePrincipal<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">\u2705 Yes<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Use client ID and secret or certificate<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryIntegrated<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">\u274c No<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Only works on Windows (requires Kerberos\/SSPI)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><div class=\"alert alert-primary\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Info\"><\/i><strong><strong>Note:<\/strong><\/strong><\/p> <strong><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">ActiveDirectoryInteractive<\/span> <\/strong>for Linux and MacOS will be supported in future releases of the driver. Please stay tuned!\u00a0 <\/div><\/p>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Unified Codebase, Smarter Engineering\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Behind the scenes, we\u2019ve <strong>unified the mssql-python driver\u2019s codebase<\/strong> across platforms. This includes hardened DDBC bindings using smart pointers for better memory safety and maintainability. It will become easier for the community members to help us grow this driver.\u00a0These efforts ensure that the driver behaves consistently across environments and is easier to maintain and extend.<\/span><\/p>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Backward Compatibility with Python \u2265 3.10\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">All three platforms now support Python versions starting from <strong>3.10<\/strong>, ensuring backward compatibility and broader adoption. Whether you&#8217;re running legacy scripts or modern workloads, the driver is ready to support your stack.\u00a0<\/span><\/p>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Seamless Installation\u00a0<\/strong><\/span><\/h2>\n<p>Thanks to our recent work on packaging and dependency management, installing the <em>mssql-python<\/em> driver is now simpler than ever. Users can get started with a single pip install command\u2014no admin privileges, no pre-installed driver manager is required.<\/p>\n<p dir=\"auto\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Windows and Linux:<\/strong>\u00a0mssql-python can be installed with\u00a0pip:<\/span><\/p>\n<pre class=\"prettyprint language-py\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><code class=\"language-py\">pip install mssql-python<\/code><\/span><\/pre>\n<p dir=\"auto\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>MacOS:<\/strong> For MacOS, the user must install <strong>openssl<\/strong> before mssql-python can be installed with pip:<\/span><\/p>\n<div class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\">\n<pre class=\"prettyprint language-py\"><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><code class=\"language-py\">brew install openssl\r\npip install mssql-python<\/code><\/span><\/pre>\n<\/div>\n<h2><strong><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Who Benefits \u2014 Explained by Scenario<\/span><\/strong><\/h2>\n<table class=\"___1hm93bs f1ddd56o f16vktn6 f1enuhaj fdclmfp f1ev3kgc ftgm304 f1uinfot fibjyge fvueend f9yszdx f1fu4s3n f3l3pb3 f1s2k7dp f8fmt76 fjvbh62 fysh76l fic4ptz f1yenhzu f1yn6nvh f14tj6oe f1jq587y f1el8yx3 f1pymoxg f1ofu761 fe6itr f7coize f1794535 f70r78m f4zgifc fk1v6el f16pyhcb fo436u6 fzy4j18 fc43013 f1hmrcvb fc4t9fq fgp09rh fjnyn6r\">\n<thead>\n<tr>\n<th><strong>Audience<\/strong><\/th>\n<th><strong>How They Benefit<\/strong><\/th>\n<th><strong>Scenario<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Python Developers<\/strong><\/td>\n<td>Seamless setup and consistent behavior across Windows, macOS, and Linux<\/td>\n<td>A developer working on a cross-platform data ingestion tool can now use the same driver codebase without OS-specific tweaks.<\/td>\n<\/tr>\n<tr>\n<td><strong>Data Engineers &amp; Analysts<\/strong><\/td>\n<td>Connection pooling and EntraID support improve performance and security<\/td>\n<td>A data engineer running ETL jobs on Azure VMs can authenticate using managed identity and benefit from faster connection reuse.<\/td>\n<\/tr>\n<tr>\n<td><strong>Open Source Contributors<\/strong><\/td>\n<td>Unified codebase makes it easier to contribute and maintain<\/td>\n<td>A contributor can now submit a patch without worrying about platform-specific regressions.<\/td>\n<\/tr>\n<tr>\n<td><strong>Enterprise Teams<\/strong><\/td>\n<td>Backward compatibility and secure authentication options<\/td>\n<td>A team migrating legacy Python 3.10 scripts to Azure SQL can do so without rewriting authentication logic.<\/td>\n<\/tr>\n<tr>\n<td><strong>PyODBC Users<\/strong><\/td>\n<td>Frictionless migration path to a modern, actively maintained driver<\/td>\n<td>A team using PyODBC can switch to mssql-python with minimal changes and gain performance, security, and cross-platform benefits.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Why It Matters \u2014 Impact Highlights<\/span><\/strong><\/h2>\n<table class=\"___1hm93bs f1ddd56o f16vktn6 f1enuhaj fdclmfp f1ev3kgc ftgm304 f1uinfot fibjyge fvueend f9yszdx f1fu4s3n f3l3pb3 f1s2k7dp f8fmt76 fjvbh62 fysh76l fic4ptz f1yenhzu f1yn6nvh f14tj6oe f1jq587y f1el8yx3 f1pymoxg f1ofu761 fe6itr f7coize f1794535 f70r78m f4zgifc fk1v6el f16pyhcb fo436u6 fzy4j18 fc43013 f1hmrcvb fc4t9fq fgp09rh fjnyn6r\">\n<thead>\n<tr>\n<th><strong>Impact Area<\/strong><\/th>\n<th><strong>Why It Matters<\/strong><\/th>\n<th><strong>Real-World Value<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Cross-Platform Development<\/strong><\/td>\n<td>Eliminates OS-specific workarounds<\/td>\n<td>Teams can standardize their SQL connectivity stack across dev, test, and prod environments.<\/td>\n<\/tr>\n<tr>\n<td><strong>Enterprise Readiness<\/strong><\/td>\n<td>EntraID support and connection pooling are built-in<\/td>\n<td>Organizations can deploy secure, scalable apps with minimal configuration.<\/td>\n<\/tr>\n<tr>\n<td><strong>Community Growth<\/strong><\/td>\n<td>Easier onboarding and contribution pathways<\/td>\n<td>New contributors can quickly understand and extend the driver, accelerating innovation.<\/td>\n<\/tr>\n<tr>\n<td><strong>Performance &amp; Scalability<\/strong><\/td>\n<td>Connection reuse reduces latency and resource usage<\/td>\n<td>Apps with high query volumes see measurable performance improvements.<\/td>\n<\/tr>\n<tr>\n<td><strong>Migration Enablement<\/strong><\/td>\n<td>Supports drop-in replacement for PyODBC and other drivers<\/td>\n<td>Developers can modernize their stack without rewriting business logic.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>What&#8217;s Next\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Here\u2019s a sneak peek at what we\u2019re working on for upcoming releases:\u00a0<\/span><\/p>\n<ul>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Linux Support \u2013 additional distros (Alpine and SUSE) will be supported in next few releases.\u00a0<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Support for Bulk Copy for accelerated data transfer<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Support for complex SQL Server data types \u00a0<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-family: 'trebuchet ms', geneva, sans-serif; font-size: 18pt;\"><strong>Try It and Share Your Feedback!\u00a0<\/strong><\/span><\/h2>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">Ready to test the latest features? We invite you to:\u00a0<\/span><\/p>\n<ol>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Try it out:<\/strong>\u00a0Check-out the\u00a0<a href=\"https:\/\/github.com\/microsoft\/mssql-python\">mssql-python\u00a0<\/a>driver and integrate it into your projects.\u00a0<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Share your thoughts:<\/strong>\u00a0Open <a href=\"https:\/\/github.com\/microsoft\/mssql-python\/issues\">issues<\/a>, suggest features, and contribute to the project.\u00a0<\/span><\/li>\n<li><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\"><strong>Join the conversation:<\/strong>\u00a0<a href=\"https:\/\/github.com\/microsoft\/mssql-python\/discussions\">GitHub Discussions<\/a>\u00a0|\u00a0<a href=\"https:\/\/techcommunity.microsoft.com\/category\/sql-server\/blog\/sqlserver\">SQL Server Tech Community<\/a>.\u00a0<\/span><\/li>\n<\/ol>\n<p><div class=\"alert alert-success\"><p class=\"alert-divider\"><i class=\"fabric-icon fabric-icon--Lightbulb\"><\/i><strong>Use Python Driver with Free Azure SQL Database<\/strong><\/p>You can use the Python Driver with the free version of Azure SQL Database!<\/p>\n<p>\u2705 <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-sql\/database\/free-offer?view=azuresql\">Deploy Azure SQL Database for free<\/a><\/p>\n<p>\u2705 <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-sql\/managed-instance\/free-offer?view=azuresql\">Deploy Azure SQL Managed Instance for free<\/a><\/p>\n<p>Perfect for testing, development, or learning scenarios without incurring costs.<\/div><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: 'trebuchet ms', geneva, sans-serif;\">We look forward to your feedback and collaboration!\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After the successful release of Public Preview of mssql-python driver, we\u2019re thrilled to announce a major milestone for the mssql-python driver: full support for all three major operating systems\u2014Windows, macOS, and Linux. This release marks a significant leap forward in our mission to provide seamless, performant, and Pythonic connectivity to Microsoft SQL Server and the [&hellip;]<\/p>\n","protected":false},"author":53852,"featured_media":10119,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[1277,1281,17,1283,1282,1278,1280,1279],"class_list":["post-10080","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-azure-sql","tag-client-driver","tag-python","tag-python-driver-for-azure-sql","tag-python-driver-for-sql-server","tag-sql-server","tag-sql-server-2025","tag-t-sql"],"acf":[],"blog_post_summary":"<p>After the successful release of Public Preview of mssql-python driver, we\u2019re thrilled to announce a major milestone for the mssql-python driver: full support for all three major operating systems\u2014Windows, macOS, and Linux. This release marks a significant leap forward in our mission to provide seamless, performant, and Pythonic connectivity to Microsoft SQL Server and the [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/10080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/users\/53852"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/comments?post=10080"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/10080\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media\/10119"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media?parent=10080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/categories?post=10080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/tags?post=10080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}