Este artigo responde a perguntas frequentes sobre o back-end do mssql-django Django para SQL Server, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure e banco de dados SQL no Microsoft Fabric.
Geral
O que é mssql-django?
O pacote mssql-django é um backend de banco de dados do Django, mantido pela Microsoft, para o SQL Server. Ele permite que aplicativos Django se conectem a SQL Server, Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure e banco de dados SQL em Microsoft Fabric usando o driver pyodbc.
Instale-o com pip:
pip install mssql-django
Quais versões do Django dão suporte ao mssql-django?
O mssql-django pacote v1.7 dá suporte ao Django 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 e 6.0. Verifique o ciclo de vida de suporte para a matriz de compatibilidade completa.
Quais versões de Python têm suporte?
O mssql-django pacote dá suporte a Python 3.8 e posterior. A versão Python específica também deve ser compatível com sua versão do Django. Por exemplo, o Django 5.0 requer Python 3.10 e versões posteriores, e o Django 6.0 requer versões Python 3.12 e posteriores. Consulte o ciclo de vida de suporte para a matriz de compatibilidade completa.
O mssql-django é mantido por Microsoft?
Configuração
Qual é o valor de ENGINE que devo usar em settings.py?
Defina ENGINE como "mssql" em sua DATABASES configuração:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"HOST": "<your-server>",
},
}
Qual driver ODBC devo usar?
Use o Microsoft ODBC Driver 18 para SQL Server. É o padrão na mssql-django versão 1.7 e posterior e o back-end volta automaticamente para o ODBC Driver 17 se a versão 18 não estiver instalada. Especifique explicitamente o driver no dicionário OPTIONS apenas se precisar fixar uma versão específica:
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
Como me conectar a Banco de Dados SQL do Azure?
Use o nome do servidor totalmente qualificado com a porta 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",
},
},
}
Como usar Microsoft Entra autenticação?
Use extra_params em OPTIONS ou na configuração TOKEN. A TOKEN configuração funciona com qualquer azure.identity credencial, incluindo DefaultAzureCredential e ManagedIdentityCredential.
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token
"TOKEN": token,
Consulte a autenticação do Microsoft Entra para conhecer todos os métodos com suporte.
Características
O mssql-django dá suporte a JSONField?
Sim, JSONField há suporte no SQL Server 2016 e posterior. Os dados JSON são armazenados como nvarchar(max) e consultados usando as funções JSON do SQL Server. Consulte o suporte a JSONField para consultas suportadas e limitações.
O mssql-django dá suporte a datetimes com reconhecimento de fuso horário?
Sim. Quando USE_TZ=True, o Django usa o tipo de dados datetimeoffset no SQL Server. Se você estiver migrando um banco de dados existente, precisará alterar as colunas datetime2 existentes. Consulte o suporte a fuso horário.
Posso chamar procedimentos armazenados?
Sim. Use connection.cursor() com cursor.execute() para chamar procedimentos armazenados. Consulte procedimentos armazenados para obter exemplos, incluindo vários parâmetros e conjuntos de resultados.
bulk_create retorna os IDs?
Por predefinição, não. A return_rows_bulk_insert opção usa Falsecomo padrão . Defina isso como True em seu banco de dados OPTIONS para permitir o retorno de IDs após inserções em massa. Essa opção deve permanecer False para tabelas com gatilhos. Consulte operações em massa.
Troubleshooting
Recebo "Driver ODBC não encontrado". Como eu posso corrigir isso?
Instale o driver ODBC Microsoft para SQL Server. No Linux, adicione o repositório APT Microsoft primeiro e, em seguida, instale o driver:
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
Em Windows, baixe o instalador no site do Microsoft. No macOS, use Homebrew:
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18
Consulte Instalação para obter instruções completas específicas da plataforma.
Por que minha migração falha com "Não é possível alterar IDENTITY coluna"?
SQL Server não dá suporte à alteração de uma coluna de ou para uma IDENTITY coluna (AutoField). Crie um novo modelo com o tipo de campo desejado e migre dados manualmente. Consulte Limitações e recursos sem suporte no mssql-django.
Por que bulk_update falha com campos anuláveis?
Na mssql-django versão 1.7, o back-end manipula automaticamente todas as atualizações NULL. Em versões anteriores, use o parâmetro default em bulk_update para evitar NULL em expressões CASE WHEN ... THEN NULL, que causam erros de inferência de tipo no SQL Server:
Product.objects.bulk_update(products, ["description"], default="")
Consulte Operações em massa para obter detalhes.