Referência de configuração MSSQL-Django

Este artigo é a referência completa settings.py de configuração para o mssql-django backend da base de dados Django. Configure a conectividade do SQL Server editando o DATABASES dicionário no ficheiro do settings.py seu projeto Django.

Configuração mínima

O exemplo seguinte mostra a configuração mínima necessária para o caminho padrão pyodbc :

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
        },
    },
}

Para executar o alias mssql-python , defina python_driver e omita driver. O mssql-python percurso ignora driver:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<database>",
        "USER": "<user_id>",
        "PASSWORD": "<password>",
        "HOST": "<server>",
        "PORT": "1433",
        "OPTIONS": {
            "python_driver": "mssql_python",
        },
    },
}

ENGINE mantém-se "mssql" em ambos os caminhos. Os alias no mesmo projeto podem usar drivers diferentes. Para a lista completa de diferenças de comportamento, consulte Selecionar o driver da base de dados para mssql-django.

Salvo indicação, os exemplos no resto deste artigo mostram o caminho padrão pyodbc .

Definições de ligação à base de dados

Estas definições configuram a sua DATABASES ligação. A maioria são configurações padrão de Django; São anotadas exceções:

Setting Tipo Description
ENGINE String Deve ser "mssql".
NAME String Nome do banco de dados. Required.
HOST String Nome do host do servidor ou endereço IP. Use "server\\instance" o formato para instâncias nomeadas.
PORT String Porta de instância de servidor. String vazia significa porta padrão.
USER String Nome de usuário do banco de dados. Se não for concedido, é utilizado o Windows Integrated Security.
PASSWORD String Palavra-passe do utilizador da base de dados.
AUTOCOMMIT booleano Definido para False desativar a gestão de transações do Django. A predefinição é True.
Trusted_Connection String Definido para "yes" (por defeito) para usar o Windows Integrated Security quando USER não for fornecido. Quando USER e PASSWORD ambos são definidos, essas credenciais têm prioridade e Trusted_Connection são ignoradas. Defina para "no" desativar explicitamente a Windows authentication. Isto é uma mssql-django extensão, não uma configuração padrão do Django.
TOKEN String Token de acesso para autenticação Microsoft Entra (por exemplo, via azure.identity). Isto é uma mssql-django extensão, não uma configuração padrão do Django.

Definições TEST

Estas definições controlam a base de dados de testes usada pelo executor de testes do Django:

Setting Tipo Description
NAME String Nome da base de dados de teste. Padrão: "test_" + NAME.
COLLATION String Compilação para a base de dados de testes. Padrão: instância por defeito.
DEPENDENCIES Lista Dependências da ordem de criação da base de dados.
MIRROR String Alias de uma base de dados para espelhar durante os testes.

Example:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
        },
        "TEST": {
            "NAME": "test_mydb",
            "COLLATION": "SQL_Latin1_General_CP1_CI_AS",
        },
    },
}

OPÇÕES

O OPTIONS dicionário fornece uma configuração específica para o backend. Coloque estas definições dentro do DATABASES["default"]["OPTIONS"] dicionário:

Option Tipo Predefinição Description
python_driver String Não definido Defina para "mssql_python" ligar este alias através do mssql-python driver. Não define ou "pyodbc" mantém o driver padrão pyodbc . Consulte Selecionar o driver da base de dados para mssql-django.
driver String "ODBC Driver 18 for SQL Server" Driver ODBC para usar. Automaticamente volta ao Driver 17 se o 18 não estiver instalado. Ignorado no mssql-python caminho.
isolation_level String None Nível de isolamento de transações: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SNAPSHOT, ou SERIALIZABLE.
dsn String None Chamado DSN. Pode ser usado em vez de HOST. Ignorado no mssql-python caminho.
host_is_server booleano False Defina para True usarHOST/PORTdiretamente com o FreeTDS em vez de um freetds.conf nome de servidor de dados. Ignorado no mssql-python caminho.
unicode_results booleano False Ativa a funcionalidade do unicode_results pyodbc. Ignorado no mssql-python caminho.
extra_params String None Parâmetros adicionais de cadeia de ligação no "param=value;param=value" formato. Usado para autenticação Microsoft Entra. O mssql-python caminho valida estes perante uma lista de autorização.
collation String None Colação para consultas de campos de texto (por exemplo, "Chinese_PRC_CI_AS").
connection_timeout Integer 0 Tempo limite da ligação em segundos (0 = desativado). Use pelo menos 60 para Base de Dados SQL do Azure serverless com auto-pausa ativada. Uma base de dados em pausa automática recomeça na primeira tentativa de ligação, e essa tentativa pode falhar com o erro 40613 enquanto a base de dados recomeça, pelo que a aplicação tem de tentar novamente. Para mais informações, veja Pausa automática e retomada automática.
connection_retries Integer 5 Número de tentativas de retentativa de ligação.
connection_retry_backoff_time Integer 5 Tempo de recuo em segundos entre tentativas.
query_timeout Integer 0 Consulta de tempo limite em segundos (0 = desativado).
setencoding / setdecoding Lista None A codificação e a configuração de decodificação passaram para os métodos de ligação do driver selecionado. Cada setdecoding entrada precisa de uma sqltype chave em ambos os caminhos, e a mesma entrada funciona em qualquer um dos drivers. mssql-python aceita -99 por SQL_WMETADATA, e pyodbc rejeita-o. Veja a referência de codificação e decodificação pyodbc.
return_rows_bulk_insert booleano False Permitir que as filas retornem a partir da inserção em massa. Deve ser False se as tabelas tiverem gatilhos.
datefirst Integer 7 Primeiro dia da semana para SET DATEFIRST. 7é domingo (padrão SQL Server), 1 é segunda-feira.
driver_needs_utf8 Opção apenas de presença Não definido Ative a codificação UTF-8 para o driver ODBC. Esta opção é ativada quando a chave está presente em OPTIONS; o valor em si é ignorado. Normalmente é necessário com FreeTDS ou configurações antigas de unixODBC que por defeito são Latin-1.
driver_charset String None Conjunto de caracteres explícito para o driver ODBC (por exemplo, "UTF-8"). Use quando driver_needs_utf8 o driver não detetar automaticamente a codificação.
connection_recovery_interval_msec Flutuar 0.0 Milissegundos para esperar entre tentativas de retentativa no ciclo de recuperação de ligação do backend após um erro de rede. Aumente este valor para ligações de rede instáveis.

Exemplo com opções comuns:

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",
            "extra_params": "Encrypt=yes",
            "isolation_level": "READ COMMITTED",
            "connection_timeout": 30,
            "connection_retries": 3,
            "connection_retry_backoff_time": 5,
            "query_timeout": 60,
        },
    },
}

Definições específicas do backend

Esta configuração é colocada ao nível do módulo em settings.py, fora do DATABASES dicionário:

Setting Tipo Predefinição Description
DATABASE_CONNECTION_POOLING booleano True Defina para False desativar o pooling de ligações ao nível do driver. Aplica-se tanto pyodbc a como mssql-pythona .

Example:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
        },
    },
}

# Set this to False to disable driver-level connection pooling
DATABASE_CONNECTION_POOLING = False