Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il driver mssql-python supporta le seguenti parole chiave di stringa di connessione quando si connette a SQL Server, database SQL di Azure, Istanza gestita di SQL di Azure e database SQL in Microsoft Fabric.
Sintassi della stringa di connessione
Le stringhe di connessione utilizzano coppie chiave-valore separate da punti e virgola:
keyword1=value1;keyword2=value2;...
Valori di avvolgimento che contengono caratteri speciali (punti e virgola, segni uguali o parentesi a riccio) tra le parentesi a riccio:
PWD={my;complex=password}
Per includere una parentesi di chiusura letterale in un valore, si usano due parentesi di chiusura (}}):
PWD={password}}with}}brace}
Esempi di connessione di base
I seguenti esempi mostrano come connettersi utilizzando diversi metodi di autenticazione. Per applicazioni di produzione, utilizza l'autenticazione Microsoft Entra ogni volta che è possibile. Elimina le password dal codice e dalle stringhe di connessione.
SQL Server con autenticazione Microsoft Entra (consigliato)
Questo esempio utilizza ActiveDirectoryDefault, che prova più fonti di credenziali (interfaccia della riga di comando di Azure, variabili di ambiente, identità gestita) in ordine. Nessuna password è memorizzata nel codice:
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Authentication=ActiveDirectoryDefault;Encrypt=yes;"
)
SQL Server con autenticazione SQL
Usa l'autenticazione SQL solo per lo sviluppo locale su un'istanza di SQL Server che controlli. Le credenziali sono incorporate nella stringa di connessione, quindi conservale in variabili di ambiente o in un .env file invece che nel codice sorgente:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"UID=<login>;"
"PWD=<password>;"
"Encrypt=yes;"
)
Azure SQL con autenticazione Microsoft Entra
La stringa di connessione per database SQL di Azure è la stessa di SQL Server.
ActiveDirectoryDefaultfunziona tra sviluppo locale, container e ambienti ospitati su Azure senza modifiche al codice:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Usa argomenti per parole chiave
Puoi passare i parametri di connessione come argomenti chiave invece o in aggiunta a una stringa di connessione. Gli argomenti per parole chiave evitano le insidie di fuga dell'assemblaggio della stringa di connessione. Le password con caratteri speciali come @, ;, {, o } non necessitano di wrapping a corvette quando vengono passate come argomenti per parole chiave:
conn = mssql_python.connect(
server="<server>.database.windows.net",
database="<database>",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Confronta con l'assembly della stringa di connessione, dove una password contenente @ deve essere avvolta:
# 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")
Il driver unisce gli argomenti delle parole chiave nella stringa di connessione dopo la normalizzazione. Se un argomento di parola chiave corrisponde a un parametro già presente nella stringa di connessione, l'argomento della parola chiave ha la precedenza e sovrascrive il valore della stringa di connessione:
# 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"
Il seguente esempio combina una stringa di connessione con argomenti di parola chiave:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Parole chiave per le stringhe di connessione
Server e database
Specifica l'istanza SQL Server di destinazione e il database per la connessione.
| Keyword | Alias | Impostazione predefinita | Descrizione |
|---|---|---|---|
Server |
addr, address |
None | SQL Server nome host, indirizzo IP o istanza nominata. Per le istanze nominate, si usa server\instance. Per Azure SQL, usa server.database.windows.net. Per specificare una porta, usa server,port. |
Database |
None | None | Nome del database a cui connettersi. |
Authentication
Fornire credenziali per l'autenticazione SQL o specificare una modalità di autenticazione Microsoft Entra. Per le opzioni senza password, vedi modalità di autenticazione Microsoft Entra.
| Keyword | Alias | Impostazione predefinita | Descrizione |
|---|---|---|---|
UID |
uid |
None | Nome utente per l'autenticazione SQL. |
PWD |
pwd |
None | Password per l'autenticazione SQL. |
Trusted_Connection |
trusted_connection |
no |
Usa l'autenticazione integrata di Windows. Impostare su yes per attivare. |
Authentication |
authentication |
None | Modalità di autenticazione Microsoft Entra. Consultare l'autenticazione di Microsoft Entra. |
Crittografia e sicurezza
Tutte le connessioni vengono usate Encrypt=yes di default. Per la maggior parte delle applicazioni, il valore predefinito è sufficiente. Usa strict solo quando la tua istanza di SQL Server supporta TDS 8.0 e richiedi TLS 1.3. Da utilizzare TrustServerCertificate=yes solo in ambienti di sviluppo con certificati autofirmati.
| Keyword | Alias | Impostazione predefinita | Descrizione |
|---|---|---|---|
Encrypt |
encrypt |
yes |
Abilitare la crittografia TLS. Valori: yes, no, strict. Usa strict per TDS 8.0 con TLS 1.3 obbligatorio. |
TrustServerCertificate |
trust_server_certificate, trustservercertificate |
no |
Fidarsi dei certificati server autofirmati senza validazione. Impostato su yes solo per sviluppo. |
HostnameInCertificate |
hostnameincertificate |
None | Nome host atteso nel certificato TLS del server. |
ServerCertificate |
servercertificate |
None | Percorso verso un file PEM contenente l'autorità certificatrice affidabile. |
ServerSPN |
serverspn |
None | Nome principale del servizio server per l'autenticazione Kerberos. |
Disponibilità elevata e failover
Queste parole chiave si applicano ai gruppi di disponibilità sempre attivo. Impostato ApplicationIntent=ReadOnly per instradare carichi di lavoro con grande lettura (report, analisi) verso repliche secondarie, riducendo il carico sul primario. Imposta MultiSubnetFailover=yes quando il tuo gruppo di disponibilità copre più subreti.
| Keyword | Alias | Impostazione predefinita | Descrizione |
|---|---|---|---|
MultiSubnetFailover |
multisubnetfailover |
no |
Abilita il failover multi-subnet per i gruppi di disponibilità Always On. |
ApplicationIntent |
applicationintent |
ReadWrite |
Dichiara il tipo di carico di lavoro dell'applicazione. Utilizzare ReadOnly per il routing in sola lettura verso repliche secondarie. |
ConnectRetryCount |
connectretrycount |
1 |
Numero di tentativi di riconnessione automatica per la resilienza della connessione inattiva. Questa è una funzione a livello di driver per le connessioni inattive interrotte, non un sostituto della logica di ritenti a livello applicativo. |
ConnectRetryInterval |
connectretryinterval |
10 |
Secondi tra un tentativo di resilienza della connessione inattiva e l'altra. |
Prestazioni e rete
I valori predefiniti funzionano per la maggior parte delle applicazioni. Aumenta PacketSize (fino a 32767) per trasferimenti dati in massa. Configura KeepAlive se le connessioni attraversano firewall o bilanciatori di carico che interrompono sessioni TCP inattive.
| Keyword | Alias | Impostazione predefinita | Descrizione |
|---|---|---|---|
PacketSize |
packet size, packetsize |
4096 |
Dimensione del pacchetto di rete in byte (512–32767). |
KeepAlive |
keepalive |
None | Intervallo TCP keep-alive in pochi secondi. |
KeepAliveInterval |
keepaliveinterval |
None | Intervallo di ritenti TCP keep-alive in pochi secondi. |
IpAddressPreference |
ipaddresspreference |
None | Preferenze della famiglia di indirizzi IP: IPv4First, IPv6First, UsePlatformDefault. |
Parole chiave riservate
| Keyword | Descrizione |
|---|---|
Driver |
Riservato per uso interno. Il conducente gestisce questo valore automaticamente. |
APP |
Riservato. Imposta sempre il driver su "MSSQL-Python" di sé stesso. |
Modalità di autenticazione Microsoft Entra
La Authentication parola chiave supporta i seguenti valori. Scegli la modalità che si adatta al tuo dispiegamento:
| Valore | Descrizione | Quando utilizzare |
|---|---|---|
ActiveDirectoryDefault |
Utilizzi DefaultAzureCredential dall'Azure Identity SDK. Prova più metodi di autenticazione in sequenza. |
Sviluppo locale tra interfaccia della riga di comando di Azure, Azure PowerShell e Azure Developer CLI. Per la produzione, usa una modalità specifica (ActiveDirectoryMSI, ActiveDirectoryServicePrincipal) per evitare il lento camminare della catena delle credenziali. |
ActiveDirectoryInteractive |
Accesso interattivo tramite browser. Su Windows, delega nativamente al driver ODBC. | Sviluppo locale e strumenti in cui un utente è presente per autenticarsi in un browser. |
ActiveDirectoryDeviceCode |
Flusso di codice del dispositivo per ambienti headless. Mostra un codice da inserire in https://microsoft.com/devicelogin. |
Sessioni SSH, container Docker o altri ambienti senza browser. |
ActiveDirectoryPassword |
Deprecated. Autenticazione per nome utente e password con Microsoft Entra ID. Richiede UID e PWD. Utilizza il flusso ROPC, che è incompatibile con MFA. |
Non consigliato. In sostituzione utilizzare ActiveDirectoryMSI o ActiveDirectoryServicePrincipal. |
ActiveDirectoryMSI |
Managed Service Identity per applicazioni ospitate su Azure. | Azure VM, App Service o Funzioni di Azure dove è configurata l'identità gestita. Nessuna credenziale necessaria. |
ActiveDirectoryServicePrincipal |
Autenticazione del principale del servizio. Richiede UID (ID cliente) e PWD (client secret). |
Pipeline CI/CD e servizi in background che utilizzano un'identità di applicazione registrata. |
ActiveDirectoryIntegrated |
Autenticazione integrata Windows con Microsoft Entra ID (Kerberos). | Macchine Windows unite al dominio in ambienti aziendali con Kerberos configurato. |
Per la configurazione riproducibile di Docker, devcontainer e ambienti CI, vedi Container e sviluppo locale. Quell'articolo centralizza la selezione runtime di Python e mostra come utilizzare immagini in dig pinned in ambienti condivisi.
Esempio: DefaultAzureCredential
ActiveDirectoryDefaultmappa alla catena di identità DefaultAzureCredential di Azure. Prova prima il token interfaccia della riga di comando di Azure durante lo sviluppo locale, poi l'identità gestita quando viene distribuito su Azure:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Esempio: Flusso di codice del dispositivo
Usa il flusso di codice del dispositivo quando si esegue in ambienti senza browser, come sessioni SSH o container Docker. Il driver mostra un URL e un codice da inserire su un dispositivo separato:
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
Esempio: Principio di servizio
L'autenticazione del principale servizio utilizza un'identità di applicazione registrata con un ID client e un segreto. Usa questo approccio per pipeline CI/CD e servizi in background che funzionano senza interazione dell'utente:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes;"
)
Per registrare l'applicazione e concederle l'accesso al database, consulta Microsoft Entra service principals con Azure SQL. Per l'installazione completa in mssql-python, vedi Autenticazione del principale del servizio.
Timeout della connessione
Imposta il timeout della connessione usando il parametro timeout . Usa un timeout per evitare che la tua applicazione rimanga bloccata indefinitamente quando il server non è raggiungibile:
# 30-second connection timeout
conn = mssql_python.connect(connection_string, timeout=30)
Puoi anche modificare il timeout su una connessione esistente:
conn.timeout = 60
Modalità autocommit
Di default, autocommit è False, che richiede chiamate esplicite commit() . Abilita l'autocommit per le istruzioni DDL o le query di sola lettura che non richiedono il controllo delle transazioni:
# Via parameter
conn = mssql_python.connect(connection_string, autocommit=True)
# Or after connection
conn.setautocommit(True)
Attributi di connessione
Imposta gli attributi della connessione ODBC prima che la connessione venga stabilita 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,
}
)
Costruzione di stringa di connessione programmatica
Per prevenire l'iniezione di stringa di connessione, non usare concatenazione di stringhe o f-strings con input dell'utente. Usa invece argomenti chiave o variabili ambientali. Per altri pattern di costruzione inclusi file di configurazione JSON/YAML, Azure Key Vault e una classe builder, vedi Build strings connection programically.
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"
)
Validazione della stringa di connessione
Il driver valida le stringhe di connessione e aumenta ConnectionStringParseError le rilanci per parole chiave sconosciute o con errori di scrittura:
try:
conn = mssql_python.connect("Servr=localhost;") # Typo
except mssql_python.ConnectionStringParseError as e:
print(f"Invalid connection string: {e}")
# Output: Unknown keyword 'Servr'