Repository navigation
Upcoming Release Notes
Gaurav Sharma edited this page Sep 18, 2026
·
28 revisions
The canonical release history is available in GitHub Releases and the repository CHANGELOG.
- Added per-database opt-in support for Microsoft's mssql-python driver while retaining pyodbc as the default (#596, #597, #599)
- Set the supported baseline to Django 5.2, 6.0, and 6.1 on CPython 3.10 through 3.14, with Python 3.12 or newer required for Django 6.0 and 6.1 (#598, #605)
- Made mssql-python 1.15.0 or newer a required dependency while retaining pyodbc as the default (#599)
- Replaced pytz with standard-library
zoneinfoandtzdata(#535) - Allowed future SQL Server releases to use the latest capabilities known to the backend instead of failing version validation (#609)
- Defaulted an omitted or empty
HOSTtolocalhostfor mssql-python connections (#613) - Honored explicit
MARS_Connectionsettings for Microsoft Fabric Warehouse connections (#600) - Escaped SQL Server bracket wildcards in pattern lookups using
F()expressions (#575) - Escaped single quotes in
inspectdb --schemametadata queries (#583)
- Python 3.8 and 3.9, Django 3.2 through 5.1, and SQL Server 2016 are no longer supported
- mssql-python 1.15.0 or newer is now a required dependency, including when pyodbc is selected
- Installation is limited to platforms with compatible mssql-python distributions; other environments must remain on mssql-django 1.8.0
Read the complete mssql-django 2.0 release notes.
- Added Django 6.1 support (#553, #554, #555, #556, #563, #564)
- Added Django 6.1 foreign-key introspection, including the database
ON DELETErule (#556)
- Declared unsupported Django 6.1 database-level referential actions and bitwise aggregates so they fail explicitly instead of producing incorrect behavior (#553, #554)
- Updated query compilation for Django 6.1's identifier quoting API (#555, #563)
- Preserved escaped
%%literals in raw and annotatedGROUP BYqueries (#537) - Supported
IntegerChoicesparameters in rawGROUP BYqueries (#541)
- Fixed
KeyErrorwhen connecting through aDatabaseWrappersubclass (#532) - Stopped adding
Trusted_Connectionor SSPI when an explicitAuthentication=mode is configured (#533)
- Fixed
.explain()compatibility with Django 4.0 and newer (#524) - Preserved timezone offsets from
DATETIMEOFFSETvalues and usedSYSDATETIMEOFFSET()forNow()whenUSE_TZ=True(#484)
- Added Microsoft Fabric SQL Database support for
EngineEdition=12(#518)
- Fixed
AlterFieldmigrations for descending fields inMeta.indexes(#519)
- Django 6.0 and Python 3.14 support (#488, #506, #507, #508, #509, #510)
- SQL Server 2025 support with Linux CI (#489)
- Composite primary key support for Django 5.2+ (#462, #465, #501, #504)
- ODBC Driver 18 as default with automatic v17 fallback (#493)
- Devcontainer for local development (#500)
- Copilot instructions and AI-assisted development prompts (#495)
- Enhanced
quote_name()identifier handling for aliases with periods (#490) - Meta.indexes restoration on field alteration (#498)
- Pipeline and CI infrastructure, including public ADO pipelines and SQL Server 2025 CI (#473, #474)
- JSON lookup path handling to prevent double-escaping of special characters (#506)
- Batching and ORDER BY compatibility with offset queries (#507)
-
db_defaultbulk insert alignment (#508) - JSON ordering deduplication and exclusion hygiene (#509)
- StringAgg
order_bysupport including OuterRef handling (#510, #511, #512) - Package distribution now excludes testapp from pip installs (#503)
- Django 5.1 support (#452, #454, #456, #457)
- Django 5.2 support with improved identifier quoting, auto-schema creation, and JSONArray function (#468, #460, #461)
- Enhanced JSON functionality with backward-compatible lookup logic and a refactored
has_key(#448, #459) - Pipeline infrastructure with a retry mechanism, improved ODBC installation, and excluded uncovered tests (#455, #446, #449, #451)
- Comprehensive test exclusions for Django 5.2 SQL Server limitations (#469)
- Circular import resolution in multiple database tests for Django 5.1 (#453)
- Add flag to db_comments condition (#373)
- Users can now set the
supports_commentsfeature to false to disable comment retrieval
- Users can now set the
- Fix add autofield (#357)
- Fix param format bug (#378)
- Fix query, ensure that we only check tables in the right schema (#381)
- restore original uuid behaviour (#364) Will be adding native UUID support in future release
- add support for boolean aggregates (#332)
- Support GeneratedField (#335)
- revert can_return_rows_from_bulk_insert to False (#336)
- Modify bulk update default value (#341)
- Remove subqueries from group by. Fixes #343 (#344)
- Set boolean expr flag to false, unskip constraint tests (#349)
- Fix aggregate queries with case expressions (#354)
- Update SQL query for split parameters function (#358)
- Add db_comment support (#318)
- Django 5.0 support (#327)
- Fix introspection test on SmallAutoField (#287)
- Fix converting date/time from character string. (#290)
- Add logic to include deleting _meta.indexes to _delete_indexes (#292)
- Implement fix for empty aggregate (#324)
- Add case-sensitive feature for Replace function (#222)
- Add support for Django 4.2 (#269)
- Fix #196: changed getting system datetime to cached_property (#217)
- Fix an issue of adding OFFSET keyword for legacy SQL Server versions (#218)
- Fix left padding function to return strings with correct length (#226)
- Fix limit_offset_sql to handle cases when there is no OFFSET (#235)
- Timezone support (To use will need to do some manual migrations. See the wiki page on timezone support) (#140, #160)
- Fixed inserting into tables with triggers fails (#158, #161)
- Returning rows after bulk insert is off by default and can be enabled by setting
return_rows_bulk_insertin theOPTIONSdictionary toTrue(#161) - Add capability to convert to and from AutoField and BigAutoField (#128)
- Added hashing function support (#152)
- Add xor bit shift support (#172)
- Add support for left and right arithmetic bit shift (#182)
- Add jsonfield support for sql managed instance (#198)
- Add support for sql server 2022 (#202)
- Add support for Django 4.1 (#208)
- Fix #137: handle legacy unique together constraint (#138)
- Fix random order by issue (#142)
- Fix altering unique, nullable field to non-nullable error (#163)
- Fix date_trunc_sql() to work with < 4-digit year (#188)
- Add possibility for token authentication (#102)
- Returning ids/rows after bulk insert (#107)
- Unit test for issues #110 and #90 (#115)
- Only drop necessary indexes during field rename (#97)
- KeyTransformExact applied to all databases (#98)
- Alter nullability for foreign key (#93)
- Overridden functions not working with other DBs (#105)
- reset_sequences argument in sql_flush (#112)
- Add offset clause for all Django versions (#117)
- Fixed issues related to unique constraints (#106)
- Duplicated index created when alter foreignkey
- Migration error when alter fields to JSONField/TextField
- Migration not detected for non-default schema
- Unique index lost when renaming M2M field
- Migration alterfield and indexes issue
- setencoding and setdecoding in settings.py
- Core support for Django 4.0
- ActiveDirectoryMsi authentication
- inspectdb with
--schemaflag
- Azure SQL version/features is now checked correctly
- Collation conflict when creating temp table
- Fixed unicode constraint name error
- bulk_update set fields to null
- Index name error for user-defined schema
- bulk batch size exceeding parameters limit
- Migration Alter(rename) field