mssql-django의 새로운 기능

이 문서에서는 Django 데이터베이스 백 엔드의 mssql-django 각 버전에서 새로운 기능, 개선 사항 및 변경 내용을 설명합니다.

버전 1.7.3

릴리스 날짜: 2026년 6월

버전 1.7.3은 두 개의 연결 및 런타임 수정이 포함된 이전 버전과 호환되는 패치 릴리스입니다.

버그 수정

  • ActiveDirectoryMsi 이외의 Authentication= 모드에 대한 FA001: 이전에는 백엔드가 ActiveDirectoryMsi에 대해서만 Trusted_Connection=yes를 건너뛰었습니다. USER 값을 제공하지 않는 다른 Entra 모드(예: ActiveDirectoryIntegrated, ActiveDirectoryDefault, ActiveDirectoryDeviceFlow)도 여전히 Trusted_Connection=yes를 받았으며, ODBC 드라이버는 이를 FA001(Cannot use Authentication option with Integrated Security option)와 함께 거부했습니다. 이 수정은 경계를 인식하고 대/소문자를 구분하지 않는 방식으로 명시적 Authentication= 값을 감지하며, Trusted_ConnectionIntegrated Security=SSPI는 모두 건너뜁니다. 비밀번호 처리는 변경되지 않았습니다: SqlPassword, ActiveDirectoryPassword, 및 ActiveDirectoryServicePrincipal는 계속 PWD를 전송하는 반면, ActiveDirectoryInteractive는 계속 이를 제외합니다.
  • KeyError 하위 클래스로 만든 DatabaseWrapper에서: 캐시된 sql_server_versionto_azure_sql_db 속성은 cached_property에 대한 type(self).__dict__ 인트로스펙션에 의존했으며, 이로 인해 DatabaseWrapper의 서브클래스가 해당 속성들에 처음 접근할 때 KeyError가 발생했습니다(1.7.1에서 도입된 회귀). 이 수정에서는 self.를 통해 액세스되는 명시적인 클래스 수준 딕셔너리(_known_versions, _known_azures)를 사용하므로, 조회가 MRO를 통해 해결되고 서브클래싱된 래퍼가 올바르게 동작합니다.

버전 1.7.2

릴리스 날짜: 2026년 5월

버전 1.7.2는 표준 시간대 및 호환성 수정이 포함된 이전 버전과 호환되는 패치 릴리스입니다.

버그 수정

  • .explain() Django 4.0 이상에 대한 호환성: Django 4.0 이상에서 더 이상 실패 .explain() 하지 않도록 AttributeError Django 설명 메타데이터의 컴파일러 처리를 수정했습니다. 이제 백엔드는 버전에 맞는 explain 필드를 따르며, 필요할 때는 NotSupportedError를 올바르게 발생시킵니다.
  • datetimeoffset 표준 시간대 처리: 표준 시간대 오프셋이 삭제되지 않고 유지되도록 datetimeoffset 구문 분석이 수정되었습니다. 이제 반환되는 날짜/시간 값은 필요한 경우 시간대 정보가 포함된 상태로 제공됩니다.
  • Now() with 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()를 수정했습니다. 이전 코드는 정렬 정보가 포함된 원시 필드 문자열(예: "-pub_date")을 model._meta.get_field()에 전달했으며, 이로 인해 FieldDoesNotExist가 발생했습니다. 이제 필드 이름만 추출되고 순서 지정 접미사가 제대로 삭제됩니다.
  • Microsoft Fabric 지원의 SQL 데이터베이스(EngineEdition 12): Fabric(EngineEdition=12)에서 Azure 버전으로 인식된 SQL 데이터베이스입니다. 이전에는 Fabric의 엔진 에디션을 인식하지 못해 to_azure_sql_dbFalse을 반환하고 기능 게이트 확인이 실패했습니다. 수정 사항은 _AZURE_EDITIONSEDITION_AZURE_SQL_FABRIC=12를 추가하고 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 드라이버 18 기본값: 이제 백 엔드는 SQL Server ODBC Driver 18로 기본 설정되며 버전 18이 설치되지 않은 경우 ODBC Driver 17로 자동 대체됩니다.

버전별 참고 사항

Django 버전 Notes
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월

  • db_commentssupports_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 지원이 추가되었습니다.
  • 표준 시간대 지원(datetimeoffset 포함 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 기반 연결.