이 문서에서는 SQL Server, Azure SQL Database, Azure SQL Managed Instance 및 Microsoft Fabric의 SQL 데이터베이스용 mssql-django Django 백 엔드에 대해 자주 묻는 질문에 답변합니다.
General
mssql-django란?
패키지 mssql-django 는 SQL Server Microsoft 유지 관리되는 Django 데이터베이스 백 엔드입니다. 이 프로그램은 Django 애플리케이션이 SQL Server, Azure SQL Database, Azure SQL Managed Instance, 그리고 Microsoft Fabric의 SQL 데이터베이스에 연결할 수 있게 합니다. 버전 2.0 및 이후 버전은 기본값인 mssql-python 드라이버 또는 Microsoft의 pyodbc 드라이버를 통해 연결됩니다.
pip를 사용하여 설치합니다.
pip install mssql-django
mssql-django는 어떤 버전의 Django를 지원하나요?
패키지 버전 2.0은 mssql-django Django 5.2, 6.0, 6.1을 지원합니다. Django 3.2부터 5.1까지의 프로젝트는 버전 1.8.0을 유지합니다. 전체 호환성 매트릭스에 대한 지원 수명 주기 를 확인합니다.
지원되는 Python 버전은 무엇인가요?
패키지 버전 2.0은 mssql-django Python 3.10부터 3.14까지 지원합니다. 특정 Python 버전은 Django 버전과 호환되어야 합니다: Django 5.2는 Python 3.10부터 3.13까지, Django 6.0과 6.1은 Python 3.12부터 3.14까지 테스트됩니다. 전체 호환성 매트릭스는 지원 수명 주기 를 참조하세요.
mssql-django는 어떤 Python 데이터베이스 드라이버를 사용하나요?
버전 2.0 및 이후 버전은 각 데이터베이스 별칭에 대해 선택된 두 가지 드라이버를 지원합니다.
pyodbc기본값이며, SQL Server용 외부 설치된 Microsoft ODBC 드라이버가 필요합니다. 별도의 ODBC 드라이버를 설치할 필요가 없는 Microsoft의 mssql-python 드라이버를 대신 사용하려면 해당 별칭의 python_driver 사전에 OPTIONS을(를) 추가하세요:
"OPTIONS": {
"python_driver": "mssql_python",
},
옵션을 생략하는 별칭은 계속해서 pyodbc를 사용합니다. 두 경로 간의 동작 차이에 대해서는 mssql-django의 데이터베이스 드라이버 선택을 참조하세요.
mssql-django는 Microsoft 의해 유지 관리합니까?
구성 / 설정
settings.py 어떤 ENGINE 값을 사용합니까?
ENGINE 구성에서 "mssql"을(를) DATABASES(으)로 설정하세요:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>",
},
}
어떤 ODBC 드라이버를 사용해야 하나요?
기본 pyodbc 경로에서는 Microsoft ODBC Driver 18 for SQL Server를 사용하세요. 기본값이고, 버전 18이 설치되지 않으면 백엔드가 자동으로 ODBC 드라이버 17로 돌아가요. 특정 버전을 고정해야 하는 경우에만 OPTIONS 사전에서 드라이버를 명시적으로 지정하세요. 그러면 폴백도 비활성화됩니다:
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
mssql-python 경로는 driver 옵션을 무시하고 pip와 함께 설치되는 ODBC Driver 18을 사용합니다.
Azure SQL Database 연결하려면 어떻게 해야 하나요?
포트 1433에서 정규화된 서버 이름을 사용합니다.
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>.database.windows.net",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
},
}
Microsoft Entra 인증을 사용하려면 어떻게 해야 하나요?
extra_params 또는 OPTIONS 설정에서 TOKEN을 사용합니다. 이 TOKEN 설정은 azure.identity 및 DefaultAzureCredential를 포함한 모든 ManagedIdentityCredential 자격 증명에서 작동합니다.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token
"TOKEN": token,
지원되는 모든 방법에 대한 Microsoft Entra 인증을 참조하세요.
Features
mssql-django는 JSONField를 지원하나요?
예, JSONField SQL Server 2016 이상에서 지원됩니다. JSON 데이터는 nvarchar(max)로 저장되고 SQL Server JSON 함수를 사용하여 쿼리됩니다. 지원되는 조회 및 제한 사항은 JSONField 지원을 참조하세요.
mssql-django는 표준 시간대 인식 날짜/시간을 지원하나요?
Yes.
USE_TZ=True인 경우 Django는 SQL Server에서 datetimeoffset 데이터 형식을 사용합니다. 기존 데이터베이스를 마이그레이션하는 경우 기존 datetime2 열을 변경해야 합니다.
표준 시간대 지원을 참조하세요.
저장 프로시저를 호출할 수 있나요?
Yes. 저장 프로시저를 호출하려면 connection.cursor()와 함께 cursor.execute()을 사용합니다. 여러 매개 변수 및 결과 집합을 포함하는 예제는 저장 프로시저 를 참조하세요.
bulk_create ID를 반환하나요?
기본적으로 아니요.
return_rows_bulk_insert 옵션의 기본값은 False입니다. 대량 삽입 후 ID 반환을 활성화하려면 데이터베이스 True에서 이를 OPTIONS로 설정하세요. 이 옵션은 트리거가 있는 테이블에 남아 False 있어야 합니다.
대량 작업을 참조하세요.
Troubleshooting
"ODBC 드라이버를 찾을 수 없습니다." 어떻게 해결하나요?
Microsoft ODBC Driver for SQL Server 설치합니다. Linux에서 먼저 Microsoft APT 리포지토리를 추가한 다음, 드라이버를 설치합니다.
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
ACCEPT_EULA=Y sudo apt-get install -y msodbcsql18
Windows Microsoft 웹 사이트에서 설치 관리자를 다운로드합니다. macOS에서 Homebrew를 사용합니다.
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18
전체 플랫폼 관련 지침은 설치 를 참조하세요.
"열을 변경할 IDENTITY 수 없음"으로 마이그레이션이 실패하는 이유는 무엇인가요?
SQL Server는 열을 IDENTITY (AutoField) 열로 또는 해당 열에서 변경하는 것을 지원하지 않습니다. 원하는 필드 형식으로 새 모델을 만들고 데이터를 수동으로 마이그레이션합니다.
mssql-django에서 제한 사항 및 지원되지 않는 기능을 참조하세요.
nullable 필드로 bulk_update 실패하는 이유는 무엇인가요?
백엔드는 모든 NULL 업데이트를 자동으로 처리합니다. 자리 표시자 값을 제어해야 하는 경우, SQL Server 형식 유추 오류를 일으키는 CASE WHEN ... THEN NULL 식에서 NULL를 제외하는 default에서 bulk_update 매개변수를 사용하세요:
Product.objects.bulk_update(products, ["description"], default="")
자세한 내용은 대량 작업을 참조하세요 .