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.
Platí pro:Azure SQL Database
Tento rychlý start popisuje, jak připojit aplikaci k databázi ve službě Azure SQL Database a provádět dotazy pomocí Pythonu a ovladače mssql-python. Ovladač mssql-python má integrovanou podporu ověřování Microsoft Entra, což usnadňuje připojení bez hesel. Další informace o připojeních bez hesel najdete v centru bez hesel.
Požadavky
- Předplatné Azure
- Databáze Azure SQL nakonfigurovaná s ověřováním Microsoft Entra. Můžete ji vytvořit pomocí rychlého startu: Vytvoření izolované databáze – Azure SQL Database. Případně můžete použít databázi SQL v Microsoft Fabric.
- Visual Studio Code s rozšířením Python.
- Python 3.10 nebo novější
- Azure CLI pro ověřování bez hesla (funguje ve Windows, macOS a Linuxu).
Konfigurace databáze
Zabezpečená bez hesla připojení ke službě Azure SQL Database vyžadují určité konfigurace databáze. Ověřte na logickém serveru v Azure následující nastavení, abyste se mohli správně připojit ke službě Azure SQL Database v místním i hostovaným prostředí:
V případě místních vývojových připojení se ujistěte, že je logický server Azure SQL nakonfigurovaný tak, aby umožňoval připojení IP adresy místního počítače a dalších služeb Azure:
Na webu Azure Portal v nabídce prostředků v části Zabezpečení vyberte Sítě.
Výběrem tlačítka Vybrané sítě zobrazíte další možnosti konfigurace.
Vyberte Přidat adresu IPv4 klienta (xx.xx.xx.xx) a přidejte pravidlo brány firewall, které povolí připojení z adresy IPv4 místního počítače. Případně můžete také vybrat + Přidat pravidlo brány firewall a zadat konkrétní IP adresu podle vašeho výběru.
Ujistěte se, že je zaškrtnuté políčko Povolit službám a prostředkům Azure přístup k tomuto serveru .
Varování
Povolení přístupu ke službám a prostředkům Azure pro přístup k tomuto nastavení serveru není doporučeným postupem zabezpečení pro produkční scénáře. Skutečné aplikace by měly implementovat bezpečnější přístupy, jako jsou silnější omezení brány firewall nebo konfigurace virtuální sítě.
Další informace o konfiguracích zabezpečení databáze najdete v následujících zdrojích informací:
- Konfigurujte pravidla brány firewall služby Azure SQL Database
- Nakonfigurujte virtuální síť s privátními koncovými body.
Server musí mít také povolené ověřování Microsoft Entra a musí mít přiřazený účet správce Microsoft Entra. Pro místní vývojová připojení by měl být účet správce Microsoft Entra účtem, ke kterým se můžete také přihlásit do sady Visual Studio nebo Azure CLI místně. Můžete ověřit, zda má váš server povolené ověřování Microsoft Entra na stránce Microsoft Entra ID vašeho logického serveru.
Pokud používáte osobní účet Azure, ujistěte se, že máte Microsoft Entra nastavené a nakonfigurované pro Azure SQL Database, abyste mohli účet přiřadit jako správce serveru. Pokud používáte podnikový účet, pravděpodobně pro vás již bude nakonfigurované ID Microsoft Entra.
Vytvoření projektu
Vytvořte nový projekt Pythonu pomocí editoru Visual Studio Code.
Otevřete Visual Studio Code, vytvořte pro svůj projekt novou složku a přejděte do daného adresáře.
mkdir python-sql-azure cd python-sql-azureVytvořte pro aplikaci virtuální prostředí.
py -m venv .venv .venv\scripts\activateVytvořte nový soubor Pythonu s názvem
app.py.
Instalace ovladače mssql-python
Pokud se chcete připojit ke službě Azure SQL Database pomocí Pythonu mssql-python , nainstalujte ovladač. Tento ovladač má integrovanou podporu ověřování Microsoft Entra a eliminuje potřebu ručního zpracování tokenů. V tomto rychlém startu také nainstalujete fastapi, uvicorna pydantic balíčky pro vytvoření a spuštění rozhraní API.
Poznámka:
V systému macOS a Linux jsou před instalací mssql-pythonvyžadovány systémové závislosti . Pokyny pro konkrétní platformu najdete v tématu Instalace balíčku mssql-python .
Vytvořte soubor requirements.txt s následujícími řádky:
mssql-python fastapi uvicorn[standard] pydantic python-dotenvNainstalujte požadavky.
pip install -r requirements.txt
Konfigurovat místní připojovací řetězec
Pro místní vývoj vytvořte .env ve složce projektu soubor pro uložení připojovacího řetězce. Tím udržujete přihlašovací údaje mimo váš kód a verzovací systém.
Ve složce projektu vytvořte nový soubor s názvem
.env.Přidejte proměnnou
AZURE_SQL_CONNECTIONSTRINGs vaším připojovacím řetězcem. Nahraďte zástupné symboly<database-server-name>a<database-name>vlastními hodnotami.
Ovladač mssql-python má integrovanou podporu ověřování Microsoft Entra. Pomocí parametru Authentication zadejte metodu ověřování.
ActiveDirectoryDefault automaticky zjistí přihlašovací údaje z více zdrojů bez nutnosti interaktivního přihlášení. Toto je doporučená možnost pro místní vývoj.
V případě nejspolehlivějšího místního vývojového prostředí se nejprve přihlaste pomocí Azure CLI:
az login
Pak v .env souboru použijte tento formát připojovacího řetězce:
AZURE_SQL_CONNECTIONSTRING=Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryDefault;Encrypt=yes;TrustServerCertificate=no;
ActiveDirectoryDefault vyhodnotí přihlašovací údaje v následujícím pořadí:
- Proměnné prostředí (pro přihlašovací údaje služebního principálu)
- Spravovaná identita (při spuštění v Azure)
-
Azure CLI (z
az login) - Visual Studio (jenom Windows)
-
Azure PowerShell (z
Connect-AzAccount)
Návod
V produkčních aplikacích použijte pro svůj scénář konkrétní metodu ověřování, abyste se vyhnuli latenci zjišťování přihlašovacích údajů:
-
Azure App Service/Functions: Použití
ActiveDirectoryMSI(spravovaná identita) -
Interaktivní přihlášení uživatele: Použití
ActiveDirectoryInteractive -
Principál služby: Použití
ActiveDirectoryServicePrincipal
Podrobnosti o vytvoření připojovací řetězec můžete získat z webu Azure Portal:
Přejděte na Azure SQL Server, vyberte stránku databáze SQL a vyhledejte název databáze a vyberte databázi.
V databázi přejděte na stránku Přehled a získejte název serveru.
Přidání kódu pro připojení ke službě Azure SQL Database
Ve složce projektu vytvořte soubor app.py a přidejte vzorový kód. Tento kód vytvoří rozhraní API, které:
- Načte konfiguraci ze
.envsouboru pomocípython-dotenv. - Načte připojovací řetězec Azure SQL Database z proměnné prostředí.
-
PersonsVytvoří tabulku v databázi během spouštění (pouze pro testovací scénáře). - Definuje funkci pro načtení všech
Personzáznamů z databáze. - Definuje funkci pro načtení jednoho
Personzáznamu z databáze. - Definuje funkci pro přidání nových
Personzáznamů do databáze.
from os import getenv
from typing import Union
from dotenv import load_dotenv
from fastapi import FastAPI
from pydantic import BaseModel
from mssql_python import connect
load_dotenv()
class Person(BaseModel):
first_name: str
last_name: Union[str, None] = None
connection_string = getenv("AZURE_SQL_CONNECTIONSTRING")
app = FastAPI()
@app.get("/")
def root():
print("Root of Person API")
try:
conn = get_conn()
cursor = conn.cursor()
# Table should be created ahead of time in production app.
cursor.execute("""
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Persons')
CREATE TABLE Persons (
ID int NOT NULL PRIMARY KEY IDENTITY,
FirstName varchar(255),
LastName varchar(255)
);
""")
conn.commit()
conn.close()
except Exception as e:
# Table might already exist
print(e)
return "Person API"
@app.get("/all")
def get_persons():
rows = []
with get_conn() as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM Persons")
for row in cursor.fetchall():
print(row.FirstName, row.LastName)
rows.append(f"{row.ID}, {row.FirstName}, {row.LastName}")
return rows
@app.get("/person/{person_id}")
def get_person(person_id: int):
with get_conn() as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM Persons WHERE ID = ?", (person_id,))
row = cursor.fetchone()
return f"{row.ID}, {row.FirstName}, {row.LastName}"
@app.post("/person")
def create_person(item: Person):
with get_conn() as conn:
cursor = conn.cursor()
cursor.execute("INSERT INTO Persons (FirstName, LastName) VALUES (?, ?)",
(item.first_name, item.last_name))
conn.commit()
return item
def get_conn():
"""Connect using mssql-python with built-in Microsoft Entra authentication."""
conn = connect(connection_string)
conn.setautocommit(True)
return conn
Varování
Ukázkový kód zobrazuje nezpracované příkazy SQL, které by se neměly používat v produkčním kódu. Místo toho použijte balíček ORM (Object Relational Mapper), jako je SqlAlchemy , který vygeneruje bezpečnější vrstvu objektu pro přístup k databázi.
Místní spuštění a otestování aplikace
Aplikace je připravená k místnímu otestování.
Spusťte soubor
app.pyv editoru Visual Studio Code.uvicorn app:app --reloadNa stránce Swagger UI aplikace
http://127.0.0.1:8000/docsrozbalte metodu POST a vyberte Vyzkoušet.Můžete se také pokusit použít
/redoc, abyste viděli jinou formu vygenerované dokumentace pro rozhraní API.Upravte ukázkový KÓD JSON tak, aby obsahoval hodnoty pro křestní jméno a příjmení. Vyberte Spustit a přidejte do databáze nový záznam. API vrátí úspěšnou odpověď.
Rozbalte metodu
GETna stránce Swagger UI a vyberte Vyzkoušet. Zvolte Spustit a osoba, kterou jste právě vytvořili, se vrátí.
Nasazení do Azure App Service
Aplikace je připravená k nasazení do Azure.
Vytvořte soubor start.sh tak, aby gunicorn v Aplikace Azure Service mohl spustit uvicorn. Start.sh má jeden řádek:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:appPomocí příkazu az webapp up nasaďte kód do služby App Service. (Pomocí této možnosti
-dryrunmůžete zjistit, co příkaz dělá bez vytvoření prostředku.)az webapp up \ --resource-group <resource-group-name> \ --name <web-app-name>Pomocí příkazu az webapp config set nakonfigurujte službu App Service tak, aby používala soubor start.sh.
az webapp config set \ --resource-group <resource-group-name> \ --name <web-app-name> \ --startup-file start.shPomocí příkazu az webapp identity assign povolíte systémem přiřazenou spravovanou identitu pro službu App Service.
az webapp identity assign \ --resource-group <resource-group-name> \ --name <web-app-name>V tomto rychlém startu se spravovaná identita přiřazená systémem používá pro demonstrační účely. Spravovaná identita přiřazená uživatelem je efektivnější v širším rozsahu scénářů. Další informace najdete v doporučeních k osvědčeným postupům spravované identity. Příklad použití spravované identity přiřazené uživatelem s mssql-python najdete v tématu Migrace aplikace Python pro použití bez hesel s Azure SQL Database.
Připojení služby App Service ke službě Azure SQL Database
V části Konfigurace databáze jste nakonfigurovali sítě a ověřování Microsoft Entra pro server databáze Azure SQL. V této části dokončíte konfiguraci databáze a nakonfigurujete službu App Service s připojovací řetězec pro přístup k databázovému serveru.
Ke spuštění těchto příkazů můžete použít libovolný nástroj nebo integrované vývojové prostředí , které se můžou připojit ke službě Azure SQL Database, včetně aplikace SQL Server Management Studio (SSMS) a editoru Visual Studio Code s rozšířením MSSQL. Můžete také použít Azure Portal, jak je popsáno v rychlém startu: Dotazování služby Azure SQL Database pomocí editoru dotazů na webu Azure Portal.
Přidejte uživatele do služby Azure SQL Database pomocí příkazů SQL pro vytvoření uživatele a role pro přístup bez hesla.
CREATE USER [<web-app-name>] FROM EXTERNAL PROVIDER ALTER ROLE db_datareader ADD MEMBER [<web-app-name>] ALTER ROLE db_datawriter ADD MEMBER [<web-app-name>]Další informace najdete v tématu Uživatelé databáze s omezením – zajištění přenositelnosti databáze. Příklad, který ukazuje stejný princip, ale použitý na virtuální počítač Azure, najdete v kurzu : Použití spravované identity přiřazené systémem na virtuálním počítači s Windows pro přístup k Azure SQL. Další informace o přiřazených rolích naleznete v tématu Pevné databázové role.
Pokud zakážete a potom povolíte spravovanou identitu přiřazenou systémem služby App Service, pak uživatele zahoďte a znovu ji vytvořte. Spusťte
DROP USER [<web-app-name>]a znovu spusťte příkazyCREATEaALTER. Pokud chcete zobrazit uživatele, použijteSELECT * FROM sys.database_principals.Pomocí příkazu az webapp config appsettings set přidejte nastavení aplikace pro řetězec připojení.
az webapp config appsettings set \ --resource-group <resource-group-name> \ --name <web-app-name> \ --settings AZURE_SQL_CONNECTIONSTRING="<connection-string>"U nasazené aplikace by se připojovací řetězec měla podobat:
Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryMSI;Encrypt=yes;TrustServerCertificate=no;Vyplňte
<database-server-name>a<database-name>svými hodnotami.Připojovací řetězec bez hesla neobsahuje uživatelské jméno ani heslo. Místo toho, když aplikace běží v Azure, ovladač mssql-python používá
ActiveDirectoryMSIrežim ověřování k automatickému ověření pomocí spravované identity služby App Service.
Otestování nasazené aplikace
Přejděte na adresu URL aplikace a otestujte, že funguje připojení ke službě Azure SQL Database. Adresu URL aplikace najdete na stránce přehledu služby App Service.
https://<web-app-name>.azurewebsites.net
Přidejte /docs k adrese URL pro zobrazení uživatelského rozhraní Swagger a otestování metod rozhraní API.
Gratulujeme! Vaše aplikace je teď připojená ke službě Azure SQL Database v místním i hostovaným prostředí.