Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az mssql-python illesztőprogram támogatja a következő kapcsolati karakterlánc kulcsszavakat, amikor SQL Server, Azure SQL Database, Azure SQL Managed Instance és SQL database a Microsoft Fabric-ben csatlakozik.
Kapcsolati karakterlánc szintaxisa
A kapcsolati láncok félbasszontal elválasztott kulcs-érték párokat használnak:
keyword1=value1;keyword2=value2;...
Olyan értékek tekerése, amelyek speciális karaktereket (pontosbasszula, egyenérték jelek vagy göndör fogszabályzók) tartalmaznak a göndör fogszabályzókban:
PWD={my;complex=password}
Egy szó szerinti záró merevítő beépítéséhez két záró}} merevítőt ():
PWD={password}}with}}brace}
Alapvető kapcsolódási példák
Az alábbi példák bemutatják, hogyan lehet különböző hitelesítési módszerekkel csatlakozni. Termelési alkalmazásokhoz használd a Microsoft Entra hitelesítést, amikor csak lehet. Eltávolítja a jelszavakat a kódodból és a kapcsolati láncsorokból.
SQL Server Microsoft Entra hitelesítéssel (ajánlott)
Ez a példa , ActiveDirectoryDefaultamely több hitelesítő forrást (Azure CLI, környezeti változók, kezelt identitás) sorrendben próbál ki. Kódban nincs jelszó tárolva:
import mssql_python
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;Authentication=ActiveDirectoryDefault;Encrypt=yes;"
)
SQL Server SQL hitelesítéssel
Az SQL hitelesítést csak helyi fejlesztéshez használd egy SQL Server instance ellen, amit te irányítasz. Az igazolványok a kapcsolati karakterlánc része vannak beágyazva, ezért tartsd őket környezeti változókban vagy fájlban.env, ne pedig forráskódban:
conn = mssql_python.connect(
"Server=<server>;"
"Database=<database>;"
"UID=<login>;"
"PWD=<password>;"
"Encrypt=yes;"
)
Azure SQL with Microsoft Entra authentication
Az Azure SQL Database kapcsolati karakterlánc ugyanaz, mint az SQL Server.
ActiveDirectoryDefaultműködik helyi fejlesztésen, konténereken és Azure-alapú környezeteken kódváltoztatás nélkül:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Használj kulcsszavas argumentumokat
A kapcsolati paramétereket kulcsszavaként is átadhatod a kapcsolati karakterlánc helyett vagy annak kiegészítéseként. A kulcsszó argumentumok elkerülik a kapcsolati karakterlánc assembly kiszabaduló buktatóit. Speciális karakterekkel, mint @, ;, {, vagy } olyan jelszavak, amelyek kulcsszavaként adják át őket, nem igényelnek göndör merevítő csomagolást, ha kulcsszavaként adják át őket:
conn = mssql_python.connect(
server="<server>.database.windows.net",
database="<database>",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Hasonlítsuk össze a kapcsolati karakterlánc assembly-vel, ahol egy jelszót tartalmazó @ jelszót be kell csomagolni:
# 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")
Az illezser a kulcsszava-argumentumokat a kapcsolati karakterlánc-be egyesíti a normalizáció után. Ha egy kulcsszó argumentum megfelel a már meglévő paraméternek a kapcsolati karakterlánc-ben, akkor a kulcsszó érve elsőbbséget vesz fel, és felülírja a kapcsolati karakterlánc értékét:
# 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"
Az alábbi példa egy kapcsolati karakterlánc és kulcsszava-argumentumok kombinációját tartalmazza:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;Database=<database>;",
authentication="ActiveDirectoryDefault",
encrypt="yes"
)
Kapcsolati karakterlánc kulcsszavak
Szerver és adatbázis
Határozd meg a célpont SQL Server példányt és adatbázist a kapcsolathoz.
| Keyword | Aliasok | Default | Leírás |
|---|---|---|---|
Server |
addr, address |
None | SQL Server hosztnév, IP-cím vagy nevelt példány. Nevelt példányokhoz használjuk server\instance. Azure SQL esetén használd server.database.windows.net. Port megadásához használd server,port. |
Database |
None | None | Adatbázis név, amihez csatlakozni lehet. |
Authentication
Biztosíts jogosultságot SQL hitelesítéshez, vagy megadj egy Microsoft Entra hitelesítési módot. A jelszó nélküli opciókért lásd: Microsoft Entra hitelesítési módok.
| Keyword | Aliasok | Default | Leírás |
|---|---|---|---|
UID |
uid |
None | SQL hitelesítéshez használt felhasználónév. |
PWD |
pwd |
None | SQL hitelesítéshez jelszó. |
Trusted_Connection |
trusted_connection |
no |
Használd a Windows integrált hitelesítést. Az engedélyezéshez állítsa erre: yes. |
Authentication |
authentication |
None | Microsoft Entra hitelesítési mód. Lásd: Microsoft Entra-hitelesítés. |
Titkosítás és biztonság
Minden kapcsolat alapértelmezettben használ.Encrypt=yes A legtöbb alkalmazásnál az alapértelmezett megoldás elegendő. Csak akkor használdstrict, ha az SQL Server példányod támogatja a TDS 8.0-t, és TLS 1.3-ra van szükséged. Csak önaláíró tanúsítványokkal rendelkező fejlesztő környezetekben használják TrustServerCertificate=yes .
| Keyword | Aliasok | Default | Leírás |
|---|---|---|---|
Encrypt |
encrypt |
yes |
TLS-titkosítás engedélyezése. Értékek: yes, no. strict Használat strictTDS 8.0-hoz kötelező TLS 1.3-mal. |
TrustServerCertificate |
trust_server_certificate, trustservercertificate |
no |
Megbízható önaláírt szerver tanúsítványokban ellenőrzés nélkül. Csak fejlesztésre állítva yes . |
HostnameInCertificate |
hostnameincertificate |
None | Várható hosztnév a szerver TLS tanúsítványában. |
ServerCertificate |
servercertificate |
None | Út egy PEM fájlhoz, amely tartalmazza a megbízható tanúsítvány hatóságot. |
ServerSPN |
serverspn |
None | Szerver szolgáltatás fő név a Kerberos hitelesítéshez. |
Magas rendelkezésre állás és automatikus átkapcsolás
Ezek a kulcsszavak a Always On elérhetőségi csoport telepítéseire vonatkoznak. Úgy állítva, ApplicationIntent=ReadOnly hogy az olvasást igénylő munkaterheléseket (jelentések, elemzések) másodlagos replikákra irányítsa, csökkentve az elsődleges terhelést. Állítsd be, MultiSubnetFailover=yes mikor terjed le a rendelkezésre állási csoportod több alhálózaton.
| Keyword | Aliasok | Default | Leírás |
|---|---|---|---|
MultiSubnetFailover |
multisubnetfailover |
no |
Engedélyezze a többalhálózati failovert a Always On elérhetőségi csoportok számára. |
ApplicationIntent |
applicationintent |
ReadWrite |
Alkalmazás munkaterhelés típusának bejelentése. Használat ReadOnly csak olvasható útválasztáshoz másodlagos replikákhoz. |
ConnectRetryCount |
connectretrycount |
1 |
Az automatikus újrakapcsolási kísérletek száma az alapjárati kapcsolódás ellenállósága érdekében. Ez egy driver-szintű funkció az elhagyott üres kapcsolatok esetén, nem helyettesíti az alkalmazásszintű újrapróbálkozási logikát. |
ConnectRetryInterval |
connectretryinterval |
10 |
Másodpercek az üres kapcsolati reziliencia újrakapcsolási kísérletek között. |
Teljesítmény és hálózat
Az alapértelmezések a legtöbb alkalmazásnál működnek. Növekedés PacketSize (akár 32767-re) a tömeges adatátvitelre. Konfiguráld, KeepAlive hogy a kapcsolatok átlépnek-e tűzfalakon vagy terheléselosztókon, amelyek elengedik az üres TCP üléseket.
| Keyword | Aliasok | Default | Leírás |
|---|---|---|---|
PacketSize |
packet size, packetsize |
4096 |
Hálózati csomag mérete bájtokban (512–32767). |
KeepAlive |
keepalive |
None | TCP életben tartási intervallum másodpercekben. |
KeepAliveInterval |
keepaliveinterval |
None | A TCP életben tartási újrapróbálkozási intervallum másodpercekben. |
IpAddressPreference |
ipaddresspreference |
None | IP-címcsalád preferenciája: IPv4First, IPv6First, UsePlatformDefault. |
Fenntartott kulcsszavak
| Keyword | Leírás |
|---|---|
Driver |
Belső használatra van fenntartva. A sofőr automatikusan kezeli ezt az értéket. |
APP |
Fenntartott Mindig a sofőr állítja be."MSSQL-Python" |
Microsoft Entra hitelesítési módok
A Authentication kulcsszó a következő értékeket támogatja. Válaszd ki a bevetésedhez illő módot:
| Érték | Leírás | Mikor érdemes használni? |
|---|---|---|
ActiveDirectoryDefault |
Felhasználás DefaultAzureCredential az Azure Identity SDK-ból. Több hitelesítési módszert próbál egymás után. |
Helyi fejlesztés az Azure CLI, Azure PowerShell és Azure Developer CLI területén. Gyártáshoz használj egy speciális módot (ActiveDirectoryMSI, ActiveDirectoryServicePrincipal), hogy elkerüld a lassú hitelesítési láncsétát. |
ActiveDirectoryInteractive |
Böngészőalapú interaktív bejelentkezés. Windows-on a ODBC driverre küld átruházást natív módon. | Helyi fejlesztés és olyan eszközök, ahol a felhasználó jelen van a böngészőben hitelesítéshez. |
ActiveDirectoryDeviceCode |
Eszközkód áramlása fej nélküli környezetekhez. Megjelenít egy kódot, amit be kell adni -nél https://microsoft.com/devicelogin. |
SSH ülések, Docker konténerek vagy más böngésző nélküli környezetek. |
ActiveDirectoryPassword |
Deprecated. Felhasználónév- és jelszóhitelesítés Microsoft Entra ID-vel. A következő elemek szükségesek: UID és PWD. Használja a ROPC folyamatot, ami nem kompatibilis az MFA-val. |
Nem ajánlott. Használja inkább a ActiveDirectoryMSI vagy ActiveDirectoryServicePrincipal elemet. |
ActiveDirectoryMSI |
Menedzselt szolgáltatásazonosító Azure-ban hódolt alkalmazásokhoz. | Azure VM-ek, App Service vagy Azure Functions, ahol a kezelt identitás konfigurálva van. Nincs szükség hitelesítő adatokra. |
ActiveDirectoryServicePrincipal |
Szolgáltatási alaphitelesítés. Szükség UID van (ügyfélazonosító) és PWD (kliens titkos). |
CI/CD pipeline-ek és háttérszolgáltatások, amelyek regisztrált alkalmazás identitást használnak. |
ActiveDirectoryIntegrated |
Windows integrált hitelesítés Microsoft Entra ID-vel (Kerberos). | Domain-joined Windows gépek vállalati környezetben Kerberos konfigurálva. |
A reprodukálható Docker, devcontainer és CI környezet beállításért lásd: Container és helyi fejlesztés. Ez a cikk központosítja a Python futási idejű választását, és bemutatja, hogyan lehet digest-pinned képeket használni megosztott környezetekben.
Példa: DefaultAzureCredential
ActiveDirectoryDefaulttérképezve az Azure Identity DefaultAzureCredential láncra. Először az Azure CLI tokent próbálja ki a helyi fejlesztés során, majd a Azure-ra telepítve a menedzselt identitást:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryDefault;"
"Encrypt=yes;"
)
Példa: Eszközkód áramlás
Használd az eszközkód folyamatát böngésző nélküli környezetekben, például SSH ülésekben vagy Docker konténerekben. A meghajtó egy URL-t és egy kódot jelenít meg, amit egy külön eszközön kell beírni:
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élda: Szolgáltatási alap
A szolgáltatásfő hitelesítés regisztrált alkalmazásazonosítót használ, kliensazonosítóval és titkossal. Ezt a megközelítést alkalmazzuk CI/CD pipeline-ek és háttérszolgáltatások esetén, amelyek felhasználói interakció nélkül futnak:
conn = mssql_python.connect(
"Server=<server>.database.windows.net;"
"Database=<database>;"
"Authentication=ActiveDirectoryServicePrincipal;"
"UID=<client-id>;"
"PWD=<client-secret>;"
"Encrypt=yes;"
)
Az alkalmazás regisztrálásához és adatbázis-hozzáférés megadásához lásd: Microsoft Entra szolgáltatáselvek Azure SQL-szel. A teljes beállításért lásd mssql-pythona Szolgáltatásfő hitelesítést.
Kapcsolati időkorlát
Állítsd be a kapcsolat időtúllépését a timeout paraméter segítségével. Használj időkorlátot, hogy megakadályozd, hogy az alkalmazásod határozatlan ideig lefagyjon, amikor a szerver elérhetetlen:
# 30-second connection timeout
conn = mssql_python.connect(connection_string, timeout=30)
A meglévő kapcsolat időkorlátját is módosíthatod:
conn.timeout = 60
Automatikus feladatátvételi mód
Alapértelmezés autocommit szerint False, ami explicit commit() hívásokat igényel. Engedélyezze az automatikus köteleződést DDL utasításokhoz vagy csak olvasható lekérdezésekhez, amelyek nem igényelnek tranzakcióvezérlést:
# Via parameter
conn = mssql_python.connect(connection_string, autocommit=True)
# Or after connection
conn.setautocommit(True)
Kapcsolati attribútumok
Az ODBC kapcsolat attribútumokat a kapcsolat létrehozása előtt beállítsuk a következők használatával 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,
}
)
Programmatic kapcsolati karakterlánc építés
A kapcsolati karakterlánc befecskendezésének megakadályozása érdekében ne használj string conconcatationt vagy f-stringeket felhasználói bemenettel. Használj inkább kulcsszava-argumentumokat vagy környezeti változókat. További építési mintákért, beleértve a JSON/YAML konfigurációs fájlokat, Azure Key Vault-t és egy builder osztályt, lásd: Build connection strings programmatically.
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"
)
Kapcsolati lánc ellenőrzése
Az illesztőprogram validálja a kapcsolódási láncokat és a jeleket ismeretlen vagy rosszul írt kulcsszavak esetén ConnectionStringParseError :
try:
conn = mssql_python.connect("Servr=localhost;") # Typo
except mssql_python.ConnectionStringParseError as e:
print(f"Invalid connection string: {e}")
# Output: Unknown keyword 'Servr'