Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovladač mssql-python podporuje následující klíčová slova připojovací řetězec při připojování k SQL Server, Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric.
Syntaxe připojovacího řetězce
Spojovací řetězce používají páry klíč-hodnota oddělené středníkem:
keyword1=value1;keyword2=value2;...
Hodnoty wrapu, které obsahují speciální znaky (středníky, rovnátka nebo kudrnaté závorky) v kudrnatých závorkách:
PWD={my;complex=password}
Pro zahrnutí doslovné uzavírající závorky v hodnotě použijte dvě uzavírající závorky (}}):
PWD={password}}with}}brace}
Základní příklady spojení
Následující příklady ukazují, jak se připojit pomocí různých autentizačních metod. Pro produkční aplikace používejte Microsoft Entra autentizaci, kdykoli je to možné. Odstraní hesla z vašeho kódu a spojovacích řetězců.
SQL Server s autentizací Microsoft Entra (doporučeno)
Tento příklad používá ActiveDirectoryDefault, který zkouší více zdrojů přihlašovacích údajů (Azure CLI, proměnné prostředí, spravovaná identita) v pořadí. V kódu není uloženo žádné heslo:
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Authentication=ActiveDirectoryDefault;Encrypt=yes;"
)
SQL Server s ověřením SQL
SQL autentizaci používejte pouze pro lokální vývoj proti instanci SQL Server, kterou ovládáte. Přihlašovací údaje jsou vloženy do připojovací řetězec, proto je uchovávejte v proměnných prostředí nebo v souboru.env, nikoli ve zdrojovém kódu:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"UID=<login>;"
"PWD=<password>;"
"Encrypt=yes;"
)
Azure SQL with Microsoft Entra authentication
připojovací řetězec pro Azure SQL Database je stejný jako v SQL Server.
ActiveDirectoryDefaultfunguje napříč lokálním vývojem, kontejnery a prostředími hostovanými v Azure bez změn kódu:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Používejte argumenty s klíčovými slovy
Parametry spojení můžete předávat jako argumenty klíčových slov místo nebo navíc k připojovací řetězec. Argumenty klíčových slov se vyhýbají úskalím sestavování připojovací řetězec. Hesla se speciálními znaky jako @, ;, {, nebo } nepotřebují zavírání závorkami, když jsou předána jako argumenty klíčových slov:
conn = mssql_python.connect(
server="<server>.database.windows.net",
database="<database>",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Porovnejte s assemblerem připojovací řetězec, kde musí být heslo obsahující @ zabaleno:
# 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")
Ovladač po normalizaci sloučí argumenty klíčových slov do připojovací řetězec. Pokud argument klíčového slova odpovídá parametru již v připojovací řetězec, má přednost argument klíčového slova a přepisuje hodnotu připojovací řetězec:
# 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"
Následující příklad kombinuje připojovací řetězec s argumenty klíčových slov:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Klíčová slova připojovacího řetězce
Server a databáze
Specifikujte cílovou instanci SQL Server a databázi pro připojení.
| Keyword | Přezdívky | Výchozí | Popis |
|---|---|---|---|
Server |
addr, address |
Žádný | SQL Server název hostitele, IP adresa nebo pojmenovaná instance. Pro pojmenované instance použijte server\instance. For Azure SQL, use server.database.windows.net. Pro určení portu použijte server,port. |
Database |
Žádný | Žádný | Název databáze, ke kterému se připojit. |
Autentizace
Zadejte přihlašovací údaje pro SQL autentizaci nebo zadejte režim autentizace Microsoft Entra. Pro možnosti bez hesla viz Microsoft Entra autentizační režimy.
| Keyword | Přezdívky | Výchozí | Popis |
|---|---|---|---|
UID |
uid |
Žádný | Uživatelské jméno pro SQL autentizaci. |
PWD |
pwd |
Žádný | Heslo pro SQL autentizaci. |
Trusted_Connection |
trusted_connection |
no |
Používejte Windows integrovanou autentizaci. Nastavte na yes, chcete-li povolit. |
Authentication |
authentication |
Žádný | Autentizační režim Microsoft Entra. Viz ověřování Microsoft Entra. |
Šifrování a zabezpečení
Všechny připojení se používají Encrypt=yes ve výchozím nastavení. Pro většinu aplikací je výchozí nastavení dostačující. Používejte strict jen tehdy, když vaše instance SQL Server podporuje TDS 8.0 a potřebujete TLS 1.3. Používejte TrustServerCertificate=yes pouze ve vývojových prostředích s vlastními certifikáty.
| Keyword | Přezdívky | Výchozí | Popis |
|---|---|---|---|
Encrypt |
encrypt |
yes |
Povolte šifrování TLS. Hodnoty: yes, no, strict. Použití strict pro TDS 8.0 s povinným TLS 1.3. |
TrustServerCertificate |
trust_server_certificate, trustservercertificate |
no |
Důvěřujte samopodepsaným serverovým certifikátům bez ověření. Nastaveno pouze yes pro vývoj. |
HostnameInCertificate |
hostnameincertificate |
Žádný | Očekávané jméno hostitele v TLS certifikátu serveru. |
ServerCertificate |
servercertificate |
Žádný | Cesta k souboru PEM obsahujícímu důvěryhodnou certifikační autoritu. |
ServerSPN |
serverspn |
Žádný | Server Service Principal Name for Kerberos authentication. |
Vysoká dostupnost a převzetí služeb při selhání
Tato klíčová slova platí pro nasazení skupin Always On pro dostupnost. Nastavte ApplicationIntent=ReadOnly směrování čtení náročných zátěží (reporty, analytika) na sekundární repliky, čímž se snižuje zátěž na primární repliku. Nastavit MultiSubnetFailover=yes , kdy vaše skupina dostupnosti zasahuje do více podsítí.
| Keyword | Přezdívky | Výchozí | Popis |
|---|---|---|---|
MultiSubnetFailover |
multisubnetfailover |
no |
Povolte přepnutí v rámci více podsítí pro skupiny dostupnosti Always On. |
ApplicationIntent |
applicationintent |
ReadWrite |
Deklarujte typ zátěže aplikace. Použití ReadOnly pro směrování pouze pro čtení na sekundární repliky. |
ConnectRetryCount |
connectretrycount |
1 |
Počet pokusů o automatické opětovné připojení pro odolnost nečinného spojení. Toto je funkce na úrovni ovladače pro přerušení nečinných spojení, nikoli náhrada za logiku opakovaných pokusů na úrovni aplikace. |
ConnectRetryInterval |
connectretryinterval |
10 |
Sekundy mezi pokusy o obnovení odolnosti nečinného připojení. |
Výkon a síť
Výchozí nastavení funguje pro většinu aplikací. Zvýšení PacketSize (až na 32767) pro hromadné přenosy dat. Konfigurujte KeepAlive , zda spojení překračují firewally nebo load balancery, které přerušují nečinné TCP relace.
| Keyword | Přezdívky | Výchozí | Popis |
|---|---|---|---|
PacketSize |
packet size, packetsize |
4096 |
Velikost síťového paketu v bajtech (512–32767). |
KeepAlive |
keepalive |
Žádný | TCP udržuje interval naživu během několika sekund. |
KeepAliveInterval |
keepaliveinterval |
Žádný | TCP udržuje interval opakování během několika sekund. |
IpAddressPreference |
ipaddresspreference |
Žádný | Preference IPv4Firstrodiny IP adres: , IPv6First, . UsePlatformDefault |
Vyhrazená klíčová slova
| Keyword | Popis |
|---|---|
Driver |
Vyhrazeno pro interní použití. Řidič tuto hodnotu spravuje automaticky. |
APP |
Rezervovaný. Vždy nastavené "MSSQL-Python" řidičem. |
Autentizační režimy Microsoft Entra
Klíčové Authentication slovo podporuje následující hodnoty. Vyberte režim, který odpovídá vašemu nasazení:
| Hodnota | Popis | Kdy ho použít |
|---|---|---|
ActiveDirectoryDefault |
Použití DefaultAzureCredential z Azure Identity SDK. Zkouší více autentizačních metod za sebou. |
Lokální vývoj napříč Azure CLI, Azure PowerShell a Azure Developer CLI. Pro produkci použijte specifický režim (ActiveDirectoryMSI, ActiveDirectoryServicePrincipal), abyste se vyhnuli pomalému řetězovému postupu s přihlašováním. |
ActiveDirectoryInteractive |
Interaktivní přihlášení v prohlížeči. Na Windows se ovladač ODBC řídí nativně. | Lokální vývoj a nástroje, kde je přítomen uživatel pro autentizaci v prohlížeči. |
ActiveDirectoryDeviceCode |
Tok kódu zařízení pro prostředí bez hlavy. Zobrazuje kód pro zadání na .https://microsoft.com/devicelogin |
SSH relace, Docker kontejnery nebo jiná prostředí bez prohlížeče. |
ActiveDirectoryPassword |
Deprecated. Ověření uživatelského jména a hesla pomocí Microsoft Entra ID. Vyžaduje UID a PWD. Používá ROPC flow, který není kompatibilní s MFA. |
Nedoporučuje se. Použijte ActiveDirectoryMSI nebo ActiveDirectoryServicePrincipal místo toho. |
ActiveDirectoryMSI |
Managed Service Identity pro aplikace hostované v Azure. | Azure VMs, App Service nebo Azure Functions, kde je řízená identita konfigurována. Nejsou potřeba žádné přihlašovací údaje. |
ActiveDirectoryServicePrincipal |
Autentizace principa služby. Vyžaduje UID (client ID) a PWD (client secret). |
CI/CD pipeline a služby na pozadí, které používají registrovanou identitu aplikace. |
ActiveDirectoryIntegrated |
Windows Integrated authentication with Microsoft Entra ID (Kerberos). | Doménově připojené Windows stroje v podnikových prostředích s konfigurovaným Kerberosem. |
Pro reprodukovatelné nastavení prostředí Docker, devcontainer a CI viz Container a lokální vývoj. Tento článek centralizuje výběr v běhu v Python a ukazuje, jak používat obrázky připnuté digestem ve sdílených prostředích.
Příklad: DefaultAzureCredential
ActiveDirectoryDefaultmapuje na řetězec Azure IdentityDefaultAzureCredential. Nejprve zkouší token Azure CLI během lokálního vývoje, poté spravovanou identitu při nasazení do Azure:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Příklad: Tok kódu zařízení
Používejte flow kódu zařízení při provozu v prostředích bez prohlížeče, jako jsou SSH relace nebo Docker kontejnery. Ovladač zobrazí URL a kód pro zadání na samostatném zařízení:
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
Příklad: Hlavní představitel služby
Autentizace principu služby používá registrovanou identitu aplikace s ID klienta a tajemstvím. Použijte tento přístup pro CI/CD pipeline a služby na pozadí, které běží bez interakce uživatele:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes;"
)
Pro registraci aplikace a udělení přístupu do databáze viz Microsoft Entra service principals with Azure SQL. Pro úplné nastavení v mssql-python, viz Servisní principální autentizace.
Časový limit připojení vypršel
Nastavte časový limit připojení pomocí parametru timeout . Použijte časový limit, abyste zabránili tomu, aby vaše aplikace zasekla na neurčito, když je server nedostupný:
# 30-second connection timeout
conn = mssql_python.connect(connection_string, timeout=30)
Můžete také změnit časový limit na existujícím připojení:
conn.timeout = 60
Režim automatického dokončování
Ve výchozím nastavení autocommit je False, což vyžaduje explicitní commit() volání. Povolte autocommit pro DDL příkazy nebo dotazy pouze pro čtení, které nepotřebují řízení transakcí:
# Via parameter
conn = mssql_python.connect(connection_string, autocommit=True)
# Or after connection
conn.setautocommit(True)
Atributy připojení
Nastavte atributy spojení ODBC před navázáním spojení pomocí 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,
}
)
Programové budování připojovací řetězec
Aby se zabránilo vstřikování připojovací řetězec, nepoužívejte konkatenaci řetězců ani f-stringy s uživatelským vstupem. Používejte místo toho argumenty klíčových slov nebo proměnné prostředí. Pro více konstrukčních vzorů včetně konfiguračních souborů JSON/YAML, Azure Key Vault a třídy builder viz Build connection strings programmaticky.
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"
)
Validace spojovacích řetězců
Ovladač ověřuje spojovací řetězce a zvyšuje počet ConnectionStringParseError klíčových slov pro neznámá nebo špatně napsaná slova:
try:
conn = mssql_python.connect("Servr=localhost;") # Typo
except mssql_python.ConnectionStringParseError as e:
print(f"Invalid connection string: {e}")
# Output: Unknown keyword 'Servr'