mssql-django の新機能

この記事では、 mssql-django Django データベース バックエンドの各バージョンの新機能、機能強化、および変更について説明します。

バージョン 1.7.3

リリース日: 2026 年 6 月

バージョン 1.7.3 は、2 つの接続とランタイムの修正プログラムを備えた下位互換性のあるパッチ リリースです。

バグの修正

  • FA001以外のAuthentication=モードのActiveDirectoryMsi: 以前は、バックエンドはTrusted_Connection=yesに対してのみActiveDirectoryMsiをスキップしました。 USER値 (たとえば、ActiveDirectoryIntegratedActiveDirectoryDefaultActiveDirectoryDeviceFlow) を提供しないその他の Entra モードでは、ODBC ドライバーが Trusted_Connection=yes (FA001) で拒否したCannot use Authentication option with Integrated Security optionが引き続き受信されます。 この修正では、明示的に指定された Authentication= の値を、境界を考慮した大文字と小文字を区別しない一致で検出し、Trusted_ConnectionIntegrated Security=SSPI はどちらもスキップします。 パスワードの処理は変更されません。 SqlPasswordActiveDirectoryPasswordActiveDirectoryServicePrincipal は引き続き PWDを送信しますが、 ActiveDirectoryInteractive は引き続き省略します。
  • KeyError サブクラス化された DatabaseWrapper での:キャッシュされたsql_server_versionおよびto_azure_sql_dbプロパティは、cached_propertytype(self).__dict__イントロスペクションに依存していたため、DatabaseWrapperのサブクラスがそれらに初めてアクセスした際にKeyErrorが発生しました(1.7.1で導入されたリグレッション)。 この修正では、_known_versionsを介してアクセスされる明示的なクラスレベルのディクテーション (_known_azuresself.) が使用されるため、MRO を介してルックアップが解決され、サブクラス化されたラッパーが正しく機能します。

バージョン 1.7.2

リリース日: 2026 年 5 月

バージョン 1.7.2 は、タイム ゾーンと互換性の修正プログラムを含む下位互換性のあるパッチ リリースです。

バグの修正

  • Django 4.0 以降の互換性.explain(): Django 4.0 以降で.explain()AttributeError失敗しないように、Django の explain メタデータのコンパイラ処理を修正しました。 バックエンドはバージョンに適した explain フィールドに従い、必要に応じて NotSupportedError を正しく生成するようになりました。
  • datetimeoffset タイム ゾーンの処理: datetimeoffset の解析が修正され、タイム ゾーン オフセットが削除される代わりに保持されます。 返される日時は、想定される場合はタイムゾーン情報を含むようになりました。
  • Now()を使用したUSE_TZ=True: タイム ゾーンのサポートが有効な場合にタイム ゾーン対応の動作を使用するようにNow()の SQL 生成が更新され、UTC 以外のSQL Server ホストでのタイムスタンプの誤差が防止されます。

バージョン 1.7.1

リリース日: 2026 年 4 月

バージョン 1.7.1 は、バグ修正プログラムを含む下位互換性のあるパッチ リリースです。

バグの修正

  • FieldDoesNotExist降順のインデックス順序でフィールドを変更する際の: インデックス フィールド名を解決するときにindex.fieldsではなくindex.fields_ordersを使用するよう、schema.py内の_alter_field()を修正しました。 前のコードでは、未加工の field-with-ordering 文字列(たとえば "-pub_date")を model._meta.get_field() に渡していたため、FieldDoesNotExist が発生していました。 これで、フィールド名のみが抽出され、順序付けサフィックスが適切に破棄されます。
  • Microsoft Fabric サポートの SQL データベース (EngineEdition 12): Fabric (EngineEdition=12) の SQL データベースがAzure エディションとして認識されました。 以前は、Fabricのエンジン エディションが認識されず、to_azure_sql_dbFalseを返し、機能ゲート チェックが失敗していました。 この修正により、EDITION_AZURE_SQL_FABRIC=12_AZURE_EDITIONSが追加され、Fabricがサポートされている最新のSQL Serverバージョンにマップされます。 JSONField、ハッシュ関数、照合順序のイントロスペクション、およびテスト データベースの破棄が、Fabricで正しく機能するようになりました。

バージョン 1.7

リリース日: 2026 年 3 月

ハイライト

  • Django 6.0 のサポート: Django 6.0 との完全な互換性。Python 3.12 以降が必要です。 6.0 のすべての API 変更は、バックエンドによって透過的に処理されます。
  • 部分的な CompositePrimaryKey のサポート: バックエンドは Django 5.2 CompositePrimaryKeyの部分的なサポートを追加します。 サブクエリに対するタプル比較には Django 5.2.4 以降が必要であり、一部の複合キーと JSONField エッジ ケースが残ります。 Django 5.2 自体は、mssql-django 1.6 で最初にサポートされていました。
  • SQL Server 2025 サポート: SQL Server 2025 に対して検証済み。
  • ODBC Driver 18 の既定値: バックエンドは既定で ODBC Driver 18 for SQL Serverになり、バージョン 18 がインストールされていない場合は ODBC Driver 17 への自動フォールバックが行われます。

バージョン固有の注意事項

Django バージョン メモ
Django 5.1 inspectdb では複合主キーを持つテーブルを検査できますが、完全なモデル定義は生成されません。
Django 5.2 CompositePrimaryKey サポートは部分的です。 サブクエリとのタプル比較には Django 5.2.4 以降が必要であり、一部の移行と JSONField エッジ ケースが残ります。
Django 6.0 Python 3.12 以降が必要です。 すべての 5.2 の制限が適用されます。

バージョン 1.6

リリース日: 2025 年 8 月

  • Django 5.1 と 5.2 のサポートが追加されました。
  • 強化された JSON 機能と下位互換性。
  • パイプライン インフラストラクチャの改善。

バージョン 1.5

リリース日: 2024 年 4 月

  • supports_comments db_comments 用の機能フラグを追加しました。
  • AutoField、パラメーターの書式設定、およびスキーマ クエリのバグ修正。

バージョン 1.4

リリース日: 2024 年 1 月

  • Django 5.0 のサポートを追加しました。
  • db_commentサポートが追加されました。
  • 日付/時刻変換と空の集計のバグ修正。

バージョン 1.3

リリース日: 2023 年 5 月

  • Django 4.2 のサポートが追加されました。
  • 大文字と小文字を区別する Replace 関数のサポートが追加されました。
  • OFFSET処理と左パディングのバグ修正。

バージョン 1.2

リリース日: 2022 年 12 月

  • Django 4.1 のサポートが追加されました。
  • タイム ゾーンのサポート (を使用した USE_TZ=True) を追加しました。
  • 一括挿入 ID 取得 return_rows_bulk_insert オプションを追加しました。
  • SQL Server 2022 のサポートが追加されました。
  • Azure SQL Managed InstanceJSONFieldサポートを追加しました。

バージョン 1.1

リリース日: 2022 年 7 月

  • Django 3.2 および 4.0 のサポート。
  • SQL Server 2016 以降および Azure SQL Database をサポートします。
  • pyodbcベースの接続。