Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O driver mssql-python suporta as seguintes palavras-chave de cadeia de ligação ao ligar ao SQL Server, Base de Dados SQL do Azure, Azure SQL Managed Instance e base de dados SQL no Microsoft Fabric.
Sintaxe da cadeia de conexão
As cadeias de ligação usam pares chave-valor separados por ponto e vírgula:
keyword1=value1;keyword2=value2;...
Valores de envolvimento que contêm caracteres especiais (ponto e vírgula, sinais iguais ou colchetes enrolados) entre colchetes:
PWD={my;complex=password}
Para incluir uma coltese de fecho literal num valor, use duas chaves de fecho (}}):
PWD={password}}with}}brace}
Exemplos básicos de ligação
Os exemplos seguintes mostram como se ligar usando diferentes métodos de autenticação. Para aplicações de produção, utilize autenticação Microsoft Entra sempre que possível. Elimina palavras-passe do teu código e das cadeias de ligação.
SQL Server com autenticação Microsoft Entra (recomendado)
Este exemplo utiliza ActiveDirectoryDefault, que tenta múltiplas fontes de credenciais (CLI do Azure, variáveis de ambiente, identidade gerida) por ordem. Não é armazenada nenhuma palavra-passe no código:
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Authentication=ActiveDirectoryDefault;Encrypt=yes;"
)
SQL Server com autenticação SQL
Use autenticação SQL apenas para desenvolvimento local numa instância do SQL Server que controle. As credenciais estão incorporadas na cadeia de ligação, por isso mantém-nas em variáveis de ambiente ou num .env ficheiro em vez de no código-fonte:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"UID=<login>;"
"PWD=<password>;"
"Encrypt=yes;"
)
SQL do Azure com autenticação Microsoft Entra
A cadeia de ligação para Base de Dados SQL do Azure é a mesma que para SQL Server.
ActiveDirectoryDefaultfunciona em desenvolvimento local, contentores e ambientes alojados no Azure sem alterações de código:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Usar argumentos de palavras-chave
Pode passar parâmetros de conexão como argumentos-chave em vez de ou além de uma cadeia de ligação. Os argumentos de palavras-chave evitam as armadilhas escapatórias da cadeia de ligação assembly. Palavras-passe com caracteres especiais como @, ;, {, ou } não necessitam de enrolamento curly-brace quando passadas como argumentos de palavras-chave:
conn = mssql_python.connect(
server="<server>.database.windows.net",
database="<database>",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Compare com cadeia de ligação assembly, onde uma palavra-passe contém @ deve ser encapsulada:
# Connection string requires escaping
conn = mssql_python.connect("Server=srv;UID=user;PWD={p@ss;word};")
# Keyword arguments - no escaping needed
conn = mssql_python.connect(server="srv", uid="user", pwd="p@ss;word")
O driver funde argumentos de palavras-chave na cadeia de ligação após a normalização. Se um argumento de palavra-chave corresponder a um parâmetro já presente na cadeia de ligação, o argumento da palavra-chave tem precedência e sobrepõe-se ao valor da cadeia de ligação:
# The keyword argument database="production" overrides Database=dev in the connection string
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Encrypt=yes;",
database="production",
authentication="ActiveDirectoryDefault"
)
# Connects to "production", not "dev"
O exemplo seguinte combina uma cadeia de ligação com argumentos de palavras-chave:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Palavras-chave de cadeia de ligação
Servidor e base de dados
Especifique a instância e a base de dados do SQL Server alvo para a ligação.
| Keyword | Apelidos | Default | Descrição |
|---|---|---|---|
Server |
addr, address |
None | Nome de host, endereço IP ou instância nomeada do SQL Server. Para instâncias nomeadas, use server\instance. Para SQL do Azure, use server.database.windows.net. Para especificar uma porta, use server,port. |
Database |
None | None | Nome da base de dados para ligar. |
Authentication
Forneça credenciais para autenticação SQL ou especifique um modo de autenticação Microsoft Entra. Para opções sem palavra-passe, consulte modos de autenticação Microsoft Entra.
Encriptação e segurança
Todas as ligações são usadas Encrypt=yes por defeito. Para a maioria das aplicações, o padrão é suficiente. Use strict apenas quando a sua instância do SQL Server suportar TDS 8.0 e precisar de TLS 1.3.
TrustServerCertificate=yes Use apenas em ambientes de desenvolvimento com certificados auto-assinados.
| Keyword | Apelidos | Default | Descrição |
|---|---|---|---|
Encrypt |
encrypt |
yes |
Habilite a criptografia TLS. Valores: yes, no, strict. Use strict para TDS 8.0 com TLS 1.3 obrigatório. |
TrustServerCertificate |
trust_server_certificate, trustservercertificate |
no |
Confiar em certificados de servidor auto-assinados sem validação. Definido apenas para yes desenvolvimento. |
HostnameInCertificate |
hostnameincertificate |
None | Nome de host esperado no certificado TLS do servidor. |
ServerCertificate |
servercertificate |
None | Caminho para um ficheiro PEM que contém a autoridade certificadora de confiança. |
ServerSPN |
serverspn |
None | Nome principal do serviço do servidor para autenticação Kerberos. |
Alta disponibilidade e failover
Estas palavras-chave aplicam-se a implementações em grupos de disponibilidade Sempre Ativada. Defina ApplicationIntent=ReadOnly para encaminhar cargas de trabalho pesadas em leitura (relatórios, análises) para réplicas secundárias, reduzindo a carga na primária. Define MultiSubnetFailover=yes quando o teu grupo de disponibilidade abrange várias sub-redes.
| Keyword | Apelidos | Default | Descrição |
|---|---|---|---|
MultiSubnetFailover |
multisubnetfailover |
no |
Ative o failover multi-sub-redes para grupos de disponibilidade Always On. |
ApplicationIntent |
applicationintent |
ReadWrite |
Declare o tipo de carga de trabalho da aplicação. Use ReadOnly para encaminhamento apenas de leitura para réplicas secundárias. |
ConnectRetryCount |
connectretrycount |
1 |
Número de tentativas automáticas de reconexão para resiliência da ligação ociosa. Esta é uma funcionalidade ao nível do driver para ligações inativas caídas, não substitui a lógica de retentativas ao nível da aplicação. |
ConnectRetryInterval |
connectretryinterval |
10 |
Segundos entre tentativas de reconexão de resiliência da ligação ociosa. |
Desempenho e rede
Os padrões funcionam para a maioria das aplicações. Aumento PacketSize (até 32767) para transferências massivas de dados. Configura KeepAlive se as ligações atravessam firewalls ou balanceadores de carga que deixam de usar sessões TCP ociosas.
| Keyword | Apelidos | Default | Descrição |
|---|---|---|---|
PacketSize |
packet size, packetsize |
4096 |
Tamanho do pacote de rede em bytes (512–32767). |
KeepAlive |
keepalive |
None | Intervalo de manutenção TCP em segundos. |
KeepAliveInterval |
keepaliveinterval |
None | Intervalo de retentativa TCP para manter vivo em segundos. |
IpAddressPreference |
ipaddresspreference |
None | Preferência de família de endereços IP: IPv4First, IPv6First, UsePlatformDefault. |
Palavras-chave reservadas
| Keyword | Descrição |
|---|---|
Driver |
Reservado para uso interno. O condutor gere este valor automaticamente. |
APP |
Reservado. Sempre definido pelo "MSSQL-Python" condutor. |
Modos de autenticação Microsoft Entra
A Authentication palavra-chave suporta os seguintes valores. Escolha o modo que corresponde à sua missão:
| Valor | Descrição | Quando utilizar |
|---|---|---|
ActiveDirectoryDefault |
Utilizações DefaultAzureCredential do Azure Identity SDK. Tenta múltiplos métodos de autenticação em sequência. |
Desenvolvimento local em CLI do Azure, Azure PowerShell e Azure Developer CLI. Para produção, use um modo específico (ActiveDirectoryMSI, ActiveDirectoryServicePrincipal) para evitar a lenta caminhada da cadeia de credenciais. |
ActiveDirectoryInteractive |
Login interativo baseado no navegador. No Windows, delega nativamente ao driver ODBC. | Desenvolvimento local e ferramentas onde um utilizador está presente para autenticar num navegador. |
ActiveDirectoryDeviceCode |
Fluxo de código de dispositivo para ambientes headless. Apresenta um código para introduzir em https://microsoft.com/devicelogin. |
Sessões SSH, contentores Docker ou outros ambientes sem browser. |
ActiveDirectoryPassword |
Deprecated. Autenticação por nome de utilizador e palavra-passe com Microsoft Entra ID. Requer UID e PWD. Utiliza o fluxo ROPC, que é incompatível com MFA. |
Não recomendado. Use ActiveDirectoryMSI ou ActiveDirectoryServicePrincipal em vez disso. |
ActiveDirectoryMSI |
Managed Service Identity para aplicações hospedadas no Azure. | Azure VMs, App Service ou Funções do Azure onde a identidade gerida está configurada. Não são necessárias credenciais. |
ActiveDirectoryServicePrincipal |
Autenticação do principal de serviço. Requer UID (ID do cliente) e PWD (cliente secreto). |
Pipelines CI/CD e serviços em segundo plano que utilizam uma identidade de aplicação registada. |
ActiveDirectoryIntegrated |
Autenticação integrada do Windows com Microsoft Entra ID (Kerberos). | Máquinas Windows unidas ao domínio em ambientes empresariais com Kerberos configurado. |
Para configuração reprodutível de Docker, devcontainer e ambiente CI, veja Container e desenvolvimento local. Esse artigo centraliza a seleção de runtime em Python e mostra como usar imagens fixadas em digest em ambientes partilhados.
Exemplo: DefaultAzureCredential
ActiveDirectoryDefaultmapeia para a cadeia de identidade DefaultAzureCredential do Azure. Tenta primeiro o token CLI do Azure durante o desenvolvimento local, depois gerir a identidade quando implementado no Azure:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Exemplo: Fluxo de código do dispositivo
Use o fluxo de código do dispositivo ao correr em ambientes sem navegador, como sessões SSH ou contentores Docker. O driver apresenta uma URL e um código para introduzir num dispositivo separado:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDeviceCode;"
"Encrypt=yes;"
)
# Follow the prompt to authenticate at https://microsoft.com/devicelogin
Exemplo: Principal de serviço
A autenticação do principal de serviço utiliza uma identidade de aplicação registada com um ID de cliente e um segredo. Use esta abordagem para pipelines CI/CD e serviços em segundo plano que correm sem interação do utilizador:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes;"
)
Para registar a aplicação e conceder-lhe acesso à base de dados, consulte Microsoft Entra service principals with SQL do Azure. Para a configuração completa em mssql-python, veja autenticação do principal de serviço.
Tempo limite de ligação
Defina o timeout da ligação usando o timeout parâmetro. Use um timeout para evitar que a sua aplicação fique bloqueada indefinidamente quando o servidor estiver inacessível:
# 30-second connection timeout
conn = mssql_python.connect(connection_string, timeout=30)
Também pode alterar o timeout de uma ligação existente:
conn.timeout = 60
Modo de confirmação automática
Por defeito, autocommit é False, o que requer chamadas explícitas commit() . Ative o autocommit para instruções DDL ou consultas apenas de leitura que não necessitem de controlo de transações:
# Via parameter
conn = mssql_python.connect(connection_string, autocommit=True)
# Or after connection
conn.setautocommit(True)
Atributos de ligação
Defina atributos de ligação ODBC antes de a ligação ser estabelecida, usando attrs_before:
import mssql_python
conn = mssql_python.connect(
connection_string,
attrs_before={
mssql_python.SQL_ATTR_LOGIN_TIMEOUT: 30,
mssql_python.SQL_ATTR_CONNECTION_TIMEOUT: 60,
}
)
Construção programática de cadeia de ligação
Para evitar a injeção de cadeia de ligação, não use concatenação de strings ou f-strings com input do utilizador. Use argumentos-chave ou variáveis de ambiente em vez disso. Para mais padrões de construção, incluindo ficheiros de configuração JSON/YAML, Azure Key Vault e uma classe builder, veja Build connection strings programáticamente.
import os
conn = mssql_python.connect(
server=os.environ["DB_SERVER"],
database=os.environ["DB_NAME"],
authentication=os.environ.get("DB_AUTH", "ActiveDirectoryDefault"),
encrypt="yes"
)
Validação de cadeias de ligação
O driver valida cadeias de ligação e aumenta ConnectionStringParseError para palavras-chave desconhecidas ou mal escritas:
try:
conn = mssql_python.connect("Servr=localhost;") # Typo
except mssql_python.ConnectionStringParseError as e:
print(f"Invalid connection string: {e}")
# Output: Unknown keyword 'Servr'