이 문서에서는 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 애플리케이션은 pyodbc 드라이버를 사용하여 Microsoft Fabric SQL Server, Azure SQL Database, Azure SQL Managed Instance 및 SQL 데이터베이스에 연결할 수 있습니다.
pip를 사용하여 설치합니다.
pip install mssql-django
mssql-django는 어떤 버전의 Django를 지원하나요?
패키지 v1.7은 mssql-django Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 및 6.0을 지원합니다. 전체 호환성 매트릭스에 대한 지원 수명 주기 를 확인합니다.
지원되는 Python 버전은 무엇인가요?
패키지는 mssql-django Python 3.8 이상을 지원합니다. 특정 Python 버전도 Django 버전과 호환되어야 합니다. 예를 들어 Django 5.0에는 Python 3.10 이상 버전이 필요하며 Django 6.0에는 Python 3.12 이상 버전이 필요합니다. 전체 호환성 매트릭스는 지원 수명 주기 를 참조하세요.
mssql-django는 Microsoft 의해 유지 관리합니까?
구성 / 설정
settings.py 어떤 ENGINE 값을 사용합니까?
DATABASES 구성에서 ENGINE을(를) "mssql"(으)로 설정하세요:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>",
},
}
어떤 ODBC 드라이버를 사용해야 하나요?
SQL Server Microsoft ODBC Driver 18을 사용합니다. 1.7 이상에서는 mssql-django 기본값이며 버전 18이 설치되지 않은 경우 백 엔드는 자동으로 ODBC Driver 17로 돌아갑니다. 특정 버전으로 고정해야 하는 경우에만 OPTIONS 사전에서 드라이버를 명시적으로 지정합니다:
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
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 인증을 사용하려면 어떻게 해야 하나요?
OPTIONS 또는 TOKEN 설정에서 extra_params을 사용합니다. 이 TOKEN 설정은 DefaultAzureCredential 및 ManagedIdentityCredential를 포함한 모든 azure.identity 자격 증명에서 작동합니다.
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 반환을 활성화하려면 데이터베이스 OPTIONS에서 이를 True로 설정하세요. 이 옵션은 트리거가 있는 테이블에 남아 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 실패하는 이유는 무엇인가요?
1.7에서 mssql-django 백 엔드는 모든 NULL 업데이트를 자동으로 처리합니다. 이전 버전에서는 SQL Server 형식 유추 오류를 일으키는 CASE WHEN ... THEN NULL 식에서 NULL를 방지하려면 bulk_update에서 default 매개 변수를 사용하세요:
Product.objects.bulk_update(products, ["description"], default="")
자세한 내용은 대량 작업을 참조하세요 .