この記事では、 mssql-django Django データベース バックエンドの各バージョンの新機能、機能強化、および変更について説明します。
バージョン 1.7.4
発売日:2026年7月
バージョン1.7.4は、生クエリ処理と注釈付き GROUP BY クエリ処理に関する2つの修正を含む後方互換パッチリリースです。
バグの修正
-
エスケープされた
%%と実際のパラメータを含むGROUP BYクエリに対するIndexError: 以前は、GROUP BY句を含むクエリはすべて、%\w+に一致するプレースホルダーの書き換え処理を経て、{}に置き換えられていました。 この正規表現は、エスケープされた%%リテラルにもマッチしていたため、見かけ上のプレースホルダーを挿入し、クエリが%%エスケープと実際の%sパラメーターを組み合わせた場合にIndexError: Replacement index N out of rangeが発生しました。 絞り込まれた正規表現は現在、%%(そのまま保持される)と%s(実際のプレースホルダー)のみを対象としており、これはコンパイラが実際に出力する唯一のパターンです。 同じ修正により、パラメータなしクエリのLIKE '%abc%'のような脱出されていないパターンがLIKE '{}%'に書き換えられ、誤った行が返されるという無関係なサイレントバグも防げます。 -
raw
GROUP BYクエリ内のIntegerChoicesに対するNotImplementedError: 以前は、GROUP BY句を含む raw クエリにIntegerChoices値を渡すと、NotImplementedError: Not supported type <enum ...>が発生していました。 パラメータ型付けヘルパーは厳密な型チェック(typ == int)を使用しており、type(IntegerChoices_value)はintではなく enum クラスであるため、intのサブクラスであるにもかかわらず、その値は raise に到達してしまいました。 型検査では現在isinstanceが使われ、bool分岐がint分岐より先に評価されます(bool自体がintサブクラスであるため)。 列挙選択は正しくバインドされ、boolBITもバインドされ、プレーンintも変更されていません。
バージョン 1.7.3
リリース日: 2026 年 6 月
バージョン 1.7.3 は、2 つの接続とランタイムの修正プログラムを備えた下位互換性のあるパッチ リリースです。
バグの修正
-
FA001以外のAuthentication=モードのActiveDirectoryMsi: 以前は、バックエンドはTrusted_Connection=yesに対してのみActiveDirectoryMsiをスキップしました。USER値 (たとえば、ActiveDirectoryIntegrated、ActiveDirectoryDefault、ActiveDirectoryDeviceFlow) を提供しないその他の Entra モードでは、ODBC ドライバーがTrusted_Connection=yes(FA001) で拒否したCannot use Authentication option with Integrated Security optionが引き続き受信されます。 この修正では、明示的に指定されたAuthentication=の値を、境界を考慮した大文字と小文字を区別しない一致で検出し、Trusted_ConnectionとIntegrated Security=SSPIはどちらもスキップします。 パスワードの処理は変更されません。SqlPassword、ActiveDirectoryPassword、ActiveDirectoryServicePrincipalは引き続きPWDを送信しますが、ActiveDirectoryInteractiveは引き続き省略します。 -
KeyErrorサブクラス化されたDatabaseWrapperでの:キャッシュされたsql_server_versionおよびto_azure_sql_dbプロパティは、type(self).__dict__のcached_propertyイントロスペクションに依存していたため、KeyErrorのサブクラスがそれらに初めてアクセスした際にDatabaseWrapperが発生しました(1.7.1で導入されたリグレッション)。 この修正では、_known_versionsを介してアクセスされる明示的なクラスレベルのディクテーション (_known_azures、self.) が使用されるため、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降順のインデックス順序でフィールドを変更する際の: インデックス フィールド名を解決するときに_alter_field()ではなくschema.pyを使用するよう、index.fields_orders内のindex.fieldsを修正しました。 前のコードでは、未加工の field-with-ordering 文字列(たとえば"-pub_date")をmodel._meta.get_field()に渡していたため、FieldDoesNotExistが発生していました。 これで、フィールド名のみが抽出され、順序付けサフィックスが適切に破棄されます。 -
Microsoft Fabric サポートの SQL データベース (EngineEdition 12): Fabric (
EngineEdition=12) の SQL データベースがAzure エディションとして認識されました。 以前は、Fabricのエンジン エディションが認識されず、to_azure_sql_dbがFalseを返し、機能ゲート チェックが失敗していました。 この修正により、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.2CompositePrimaryKeyの部分的なサポートを追加します。 サブクエリに対するタプル比較には 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 バージョン | メモ |
|---|---|
| ジャンゴ 5.1 |
inspectdb では複合主キーを持つテーブルを検査できますが、完全なモデル定義は生成されません。 |
| ジャンゴ 5.2 |
CompositePrimaryKey サポートは部分的です。 サブクエリとのタプル比較には Django 5.2.4 以降が必要であり、一部の移行と JSONField エッジ ケースが残ります。 |
| ジャンゴ 6.0 | Python 3.12 以降が必要です。 すべての 5.2 の制限が適用されます。 |
バージョン 1.6
リリース日: 2025 年 8 月
- Django 5.1 と 5.2 のサポートが追加されました。
- 強化された JSON 機能と下位互換性。
- パイプライン インフラストラクチャの改善。
バージョン 1.5
リリース日: 2024 年 4 月
-
supports_commentsdb_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 Instance
JSONFieldサポートを追加しました。
バージョン 1.1
リリース日: 2022 年 7 月
- Django 3.2 および 4.0 のサポート。
- SQL Server 2016 以降および Azure SQL Database をサポートします。
-
pyodbcベースの接続。