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.
A következőkre vonatkozik:Azure SQL Database
Ez a rövid útmutató bemutatja, hogyan csatlakoztathat egy alkalmazást egy Adatbázishoz az Azure SQL Database-ben, és hogyan hajthat végre lekérdezéseket a Python és az mssql-Python illesztőprogram használatával. Az mssql-python illesztőprogram beépített támogatást nyújt a Microsoft Entra-hitelesítéshez, így egyszerűvé válik a jelszó nélküli kapcsolatok használata. További információt találhatsz a jelszó nélküli kapcsolatokról a jelszó nélküli platformon.
Előfeltételek
- Egy Azure-előfizetés.
- Egy Microsoft Entra-hitelesítéssel konfigurált Azure SQL-adatbázis. Létrehozhat egyet a gyorsútmutatóval: Egyetlen adatbázis létrehozása – Azure SQL Database. Másik lehetőségként sql-adatbázist is használhat a Microsoft Fabricben.
- Visual Studio Code a Python-bővítménnyel.
- Python 3.10 vagy újabb verzió.
- Az Azure CLI a jelszó nélküli hitelesítéshez (Windows, macOS és Linux rendszeren működik).
Az adatbázis konfigurálása
Az Azure SQL Database biztonságos, jelszó nélküli kapcsolataihoz bizonyos adatbázis-konfigurációk szükségesek. Ellenőrizze a következő beállításokat a logikai kiszolgálón az Azure-ben, hogy megfelelően csatlakozzon az Azure SQL Database-hez helyi és üzemeltetett környezetekben is:
Helyi fejlesztési kapcsolatok esetén győződjön meg arról, hogy az Azure SQL logikai kiszolgálója úgy van konfigurálva, hogy a helyi gép IP-címe és más Azure-szolgáltatások kapcsolódhassanak:
Az Azure Portal erőforrásmenüjének Biztonság területén válassza a Hálózatkezelés lehetőséget.
A Kiválasztott hálózatok gombra kattintva további konfigurációs beállításokat jeleníthet meg.
Válassza Adja hozzá az ügyfél IPv4-címét (xx.xx.xx.xx.xx) egy tűzfalszabály hozzáadásához, amely engedélyezi a helyi gép IPv4-címéről érkező kapcsolatokat. Másik lehetőségként választhatja a + Tűzfalszabály hozzáadása lehetőséget is egy tetszőleges IP-cím megadásához.
Győződjön meg arról, hogy a Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése a kiszolgálóhoz jelölőnégyzet be van jelölve.
Figyelmeztetés
A „Az Azure-szolgáltatások és -erőforrások hozzáférésének engedélyezése ehhez a kiszolgálóhoz” beállítás engedélyezése nem ajánlott biztonsági gyakorlat éles helyzetekben. A valós alkalmazásoknak biztonságosabb megközelítéseket kell implementálniuk, például erősebb tűzfalkorlátozásokat vagy virtuális hálózati konfigurációkat.
Az adatbázis biztonsági konfigurációiról az alábbi forrásokban olvashat bővebben:
A kiszolgálónak engedélyeznie kell a Microsoft Entra-hitelesítést is, és hozzá kell rendelnie egy Microsoft Entra rendszergazdai fiókot. Helyi fejlesztési kapcsolatok esetén a Microsoft Entra rendszergazdai fióknak olyan fióknak kell lennie, amellyel helyileg is bejelentkezhet a Visual Studióba vagy az Azure CLI-be. Ellenőrizheti, hogy a kiszolgálón engedélyezve van-e a Microsoft Entra-hitelesítés a logikai kiszolgáló Microsoft Entra-azonosító lapján.
Ha személyes Azure-fiókot használ, győződjön meg arról, hogy Microsoft Entra-t állította be és konfigurálta az Azure SQL Database- a fiók kiszolgálói rendszergazdaként való hozzárendeléséhez. Ha vállalati fiókot használ, a Microsoft Entra-azonosító valószínűleg már konfigurálva lesz Az Ön számára.
A projekt létrehozása
Hozzon létre egy új Python-projektet a Visual Studio Code használatával.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy új mappát a projekthez, és váltson erre a könyvtárra.
mkdir python-sql-azure cd python-sql-azureHozzon létre egy virtuális környezetet az alkalmazáshoz.
py -m venv .venv .venv\scripts\activateHozzon létre egy új Python-fájlt .
app.py
Az mssql-python illesztőprogram telepítése
Ha Pythonnal szeretne csatlakozni az Azure SQL Database-hez, telepítse az illesztőprogramot mssql-python . Ez az illesztőprogram beépített támogatást nyújt a Microsoft Entra-hitelesítéshez, így nincs szükség manuális tokenkezelésre. Ebben a gyorsútmutatóban API létrehozásához és futtatásához telepíti a(z) fastapi, uvicorn és pydantic csomagokat.
Megjegyzés:
MacOS és Linux rendszeren a mssql-python telepítése előtt szükség van rendszerfüggőségekre. A platformspecifikus utasításokért tekintse meg az mssql-python csomag telepítését .
Hozzon létre egy requirements.txt fájlt a következő sorokkal:
mssql-python fastapi uvicorn[standard] pydantic python-dotenvTelepítse a követelményeket.
pip install -r requirements.txt
A helyi kapcsolati sztring konfigurálása
Helyi fejlesztéshez hozzon létre egy .env fájlt a projektmappában a kapcsolati sztring tárolásához. A hitelesítő adatok a kódból és a forráskód-kezelésből kimaradnak.
A projektmappában hozzon létre egy új fájlt.
.envAdja hozzá a
AZURE_SQL_CONNECTIONSTRINGváltozót a kapcsolati sztringhez. Cserélje le a<database-server-name>és<database-name>helyőrzőket a saját értékeire.
Az mssql-python illesztőprogram beépített támogatást nyújt a Microsoft Entra-hitelesítéshez. A paraméter használatával Authentication adja meg a hitelesítési módszert.
ActiveDirectoryDefault automatikusan felderíti a hitelesítő adatokat több forrásból anélkül, hogy interaktív bejelentkezésre van szükség. Ez az ajánlott lehetőség a helyi fejlesztéshez.
A legmegbízhatóbb helyi fejlesztési élmény érdekében először jelentkezzen be az Azure CLI-vel:
az login
Ezután használja ezt a kapcsolati sztringformátumot a .env fájlban:
AZURE_SQL_CONNECTIONSTRING=Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryDefault;Encrypt=yes;TrustServerCertificate=no;
ActiveDirectoryDefault a hitelesítő adatokat a következő sorrendben értékeli ki:
- Környezeti változók (a szolgáltatásnévhez tartozó hitelesítő adatokhoz)
- Kezelt identitás (Azure-ban futtatva)
-
Azure CLI (forrás
az login) - Visual Studio (csak Windows rendszeren)
-
Azure PowerShell (forrás
Connect-AzAccount)
Jótanács
Éles alkalmazások esetén használja az adott hitelesítési módszert a forgatókönyvhöz a hitelesítő adatok felderítésének késésének elkerülése érdekében:
-
Azure App Service/Functions: Használja
ActiveDirectoryMSI(felügyelt identitás) -
Interaktív felhasználói bejelentkezés: Használat
ActiveDirectoryInteractive -
Szolgáltatásnév: Használat
ActiveDirectoryServicePrincipal
A kapcsolati sztring létrehozásához szükséges részleteket az Azure Portalról szerezheti be:
Nyissa meg az Azure SQL Servert, válassza ki az SQL-adatbázisok lapot az adatbázis nevének megkereséséhez, majd válassza ki az adatbázist.
Az adatbázisban lépjen az Áttekintés lapra a kiszolgáló nevének lekéréséhez.
Kód hozzáadása az Azure SQL Database-hez való csatlakozáshoz
A projektmappában hozzon létre egy app.py fájlt, és adja hozzá a mintakódot. Ez a kód létrehoz egy API-t, amely:
- Betölti a konfigurációt egy
.envfájlból azpython-dotenvhasználatával. - Lekéri az Azure SQL Database kapcsolati sztringet egy környezeti változóból.
- Létrehoz egy táblát
Personsaz adatbázisban az indítás során (csak tesztelési forgatókönyvekhez). - Definiál egy függvényt, amely lekéri az összes
Personrekordot az adatbázisból. - Egy függvényt határoz meg, amely egy
Personrekordot kér le az adatbázisból. - Definiál egy függvényt, amely új
Personrekordokat ad hozzá az adatbázishoz.
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
Figyelmeztetés
A mintakód nyers SQL-utasításokat jelenít meg, amelyeket nem szabad használni az éles kódban. Ehelyett használjon egy objektumrelációs leképező (ORM) csomagot, például az SqlAlchemyt , amely biztonságosabb objektumréteget hoz létre az adatbázis eléréséhez.
Az alkalmazás helyi futtatása és tesztelése
Az alkalmazás készen áll a helyi tesztelésre.
Futtassa a Visual Studio Code-ban a
app.pyfájlt.uvicorn app:app --reloadAz alkalmazás
http://127.0.0.1:8000/docsSwagger felhasználói felületén bontsa ki a POST metódust, és válassza a Kipróbálás lehetőséget.Az API-hoz létrehozott dokumentáció egy másik formáját is megpróbálhatja
/redocmegtekinteni.Módosítsa a JSON-mintát úgy, hogy az tartalmazza az utó- és vezetéknév értékeit. Válassza a Végrehajtás lehetőséget, ha új rekordot szeretne hozzáadni az adatbázishoz. Az API sikeres választ ad vissza.
Bontsa ki a
GETmetódust a Swagger felhasználói felületén, és válassza a Kipróbálás lehetőséget. Válassza a Végrehajtáslehetőséget, ekkor az imént létrehozott személy visszatér.
Üzembe helyezés az Azure App Service-ben
Az alkalmazás készen áll az Azure-ban való üzembe helyezésre.
Hozzon létre egy start.sh fájlt, hogy az Azure App Service alatt futhasson a gunicorn, amely a uvicorn-t indítja el. A start.sh egy sorból áll:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:appA az webapp up használatával üzembe helyezheti a kódot az App Service-re. (A beállítással
-dryrunmegtekintheti, hogy a parancs mit tesz az erőforrás létrehozása nélkül.)az webapp up \ --resource-group <resource-group-name> \ --name <web-app-name>Az az webapp config set paranccsal konfigurálja az App Service-t a start.sh fájl használatára.
az webapp config set \ --resource-group <resource-group-name> \ --name <web-app-name> \ --startup-file start.shAz az webapp identity assign paranccsal engedélyezheti a rendszer által hozzárendelt felügyelt identitást az App Service-ben.
az webapp identity assign \ --resource-group <resource-group-name> \ --name <web-app-name>Ebben a rövid útmutatóban egy rendszer által hozzárendelt felügyelt identitást használunk bemutató célokra. A felhasználók által hozzárendelt felügyelt identitások a forgatókönyvek szélesebb körében hatékonyabbak. További információkért tekintse meg a felügyelt identitásokkal kapcsolatos ajánlott eljárásokkal kapcsolatos javaslatokat. Ha például felhasználó által hozzárendelt felügyelt identitást szeretne használni az mssql-pythonnal, olvassa el a Python-alkalmazások migrálását jelszó nélküli kapcsolatok azure SQL Database-hez való használatához.
Az App Service csatlakoztatása az Azure SQL Database-hez
Az adatbázis konfigurálása szakaszban a hálózatkezelést és a Microsoft Entra-hitelesítést konfigurálta az Azure SQL-adatbáziskiszolgálóhoz. Ebben a szakaszban végrehajtja az adatbázis-konfigurációt, és egy kapcsolati sztringgel konfigurálja az App Service-t az adatbázis-kiszolgáló eléréséhez.
A parancsok futtatásához használhat bármilyen eszközt vagy IDE-t, amely csatlakozhat az Azure SQL Database-hez, beleértve az SQL Server Management Studiót (SSMS) és a Visual Studio Code-ot az MSSQL-bővítménnyel. Az Azure Portalt a rövid útmutatóban leírtak szerint is használhatja : Az Azure Portal lekérdezésszerkesztőjével kérdezheti le az Azure SQL Database-t.
Adjon hozzá egy felhasználót az Azure SQL Database-hez SQL-parancsokkal, hogy létrehozhasson egy felhasználót és egy szerepkört a jelszó nélküli hozzáféréshez.
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>]További információ: Tartalmazott adatbázis felhasználói – Az adatbázis hordozhatóvá tétele. Egy, az Azure-beli virtuális gépre alkalmazott alapelvet bemutató példa : Oktatóanyag: Windows rendszerű virtuális gép által hozzárendelt felügyelt identitás használata az Azure SQL eléréséhez. A hozzárendelt szerepkörökről további információt a Rögzített adatbázis szerepkörei című témakörben talál.
Ha letiltja, majd engedélyezi az App Service rendszer által hozzárendelt kezelt identitást, akkor törölje a felhasználót az adatbázisból és hozza létre újra. Futtassa a
DROP USER [<web-app-name>]parancsot, majd aCREATEésALTERparancsokat újra. A felhasználók megtekintéséhez használja a következőt:SELECT * FROM sys.database_principals.Az az webapp config appsettings set paranccsal adjon hozzá egy alkalmazásbeállítást a kapcsolati lánchoz.
az webapp config appsettings set \ --resource-group <resource-group-name> \ --name <web-app-name> \ --settings AZURE_SQL_CONNECTIONSTRING="<connection-string>"Az üzembe helyezett alkalmazás esetében a kapcsolati sztringnek a következőhöz hasonlónak kell lennie:
Server=<database-server-name>.database.windows.net;Database=<database-name>;Authentication=ActiveDirectoryMSI;Encrypt=yes;TrustServerCertificate=no;Töltse ki a
<database-server-name>és<database-name>helyet a saját értékeivel.A jelszó nélküli kapcsolati sztring nem tartalmaz felhasználónevet vagy jelszót. Ehelyett, amikor az alkalmazás az Azure-ban fut, az mssql-python illesztőprogram a hitelesítési módot használja az
ActiveDirectoryMSIApp Service felügyelt identitásával történő automatikus hitelesítéshez.
Az üzembe helyezett alkalmazás tesztelése
Keresse meg az alkalmazás URL-címét, és ellenőrizze, hogy működik-e a kapcsolat az Azure SQL Database-hez. Az alkalmazás URL-címét az App Service áttekintési oldalán találja.
https://<web-app-name>.azurewebsites.net
Fűzze hozzá /docs az URL-címet a Swagger felhasználói felületének megtekintéséhez és az API-metódusok teszteléséhez.
Gratulálok! Az alkalmazás mostantól helyi és üzemeltetett környezetben is csatlakozik az Azure SQL Database-hez.