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.
Ebben a gyorsindításban Streamlit gyorsan készíthetsz jelentést, így korán gyűjtheted a felhasználói visszajelzéseket. A mssql-python Python meghajtóját használod, hogy csatlakozz az adatbázisodhoz, és beolvasd a jelentésbe betöltött adatokat.
Az mssql-python illesztőprogram nem igényel külső függőségeket a Windows rendszerű gépeken. Az illesztőprogram egyetlen pip telepítéssel mindent telepít, amire szüksége van, így az illesztőprogram legújabb verzióját használhatja az új szkriptekhez anélkül, hogy megszegi azokat a szkripteket, amelyek frissítésére és tesztelésére nincs ideje.
az mssql-python dokumentációja | mssql-python forráskód | Csomag (PyPI) | Uv
Előfeltételek
Python 3.10 vagy újabb verzió.
Ha még nem rendelkezik Pythonnal, telepítse a Python futtatókörnyezetet és a pip csomagkezelőta python.org.
Nem szeretné használni a saját környezetét? Kövesd a Container és a helyi fejlesztést, hogy reprodukálható devcontainer vagy GitHub Codespaces környezetet hozz létre.
Visual Studio Code a következő bővítményekkel:
- Python-bővítmény a Visual Studio Code-hoz
Az Azure Command-Line Interface (CLI) a jelszó nélküli hitelesítéshez macOS és Linux rendszeren.
Ha még nem tette meg
uv, kövesse a telepítési utasításokat.Sql Serveren, Azure SQL Database-en vagy SQL Database-adatbázison a Fabricben a
AdventureWorks2025mintasémával és egy érvényes kapcsolati sztringgel.
Az operációs rendszer telepítésének előfeltételei
Egyszeri operációs rendszerspecifikus előfeltételek telepítése. A Windows felhasználók ezt a lépést kihagyhatják. A platform teljes részleteiért lásd: Install mssql-python.
SQL-adatbázis létrehozása
Létrehozni vagy csatlakozni SQL adatbázishoz az alábbi platformok egyikén:
A projekt létrehozása és a kód futtatása
- Új projekt létrehozása
- Függőségek hozzáadása
- A Visual Studio Code indítása
- Pyproject.toml frissítése
- Main.py frissítése
- A kapcsolati sztring mentése
- A szkript végrehajtása uv-futtatás használatával
Új projekt létrehozása
Nyisson meg egy parancssort a fejlesztői címtárban. Ha nincs ilyened, hozz létre egy új könyvtárat, például
pythonvagyscripts. Kerüld a mappákat a OneDrive-on, mert a szinkronizáció zavarhatja a virtuális környezet kezelését.Hozzon létre egy új projektet a
uvsegítségével.uv init rapid-prototyping-qs cd rapid-prototyping-qs
Függőségek hozzáadása
Ugyanabban a könyvtárban telepítse a mssql-python, streamlités python-dotenv a csomagokat.
uv add mssql-python python-dotenv streamlit
Indítsa el a Visual Studio Code-ot
Ugyanabban a könyvtárban futtassa a következő parancsot.
code .
Pyproject.toml frissítése
Nyissa meg a
pyproject.tomlfájlt a szerkesztőben. Ez a fájl tartalmazza a projekted metaadatait.Frissítsd az
descriptionértéket.description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."Mentse és zárja be a fájlt.
Main.py frissítése
Nyissa meg a nevű
main.pyfájlt. Ennek hasonlónak kell lennie ehhez a példához.def main(): print("Hello from rapid-prototyping-qs!") if __name__ == "__main__": main()A fájl tetejére add hozzá a következő importokat a
def main()sort tartalmazó sor elé.Jótanács
Ha a Visual Studio Code-nak problémái vannak a csomagok megoldásával, frissítenie kell az értelmezőt a virtuális környezet használatára.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection import pandas as pd import streamlit as stAz importok és a
def main()sor között adja hozzá a következő kódot.def page_load() -> None: st.set_page_config( page_title="View Data", page_icon=":bar_chart:", layout="wide", initial_sidebar_state="expanded" ) st.title("AdventureWorksLT Customer Order History") SQL_QUERY = """ SELECT c.* FROM SalesLT.Customer AS c INNER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID; """ df = load_data(SQL_QUERY) event = st.dataframe( df, use_container_width=True, hide_index=True, on_select="rerun", selection_mode="single-row" ) customer = event.selection.rows SPEND_QUERY_ALL = """ SELECT soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) AS spend, pc.Name AS ProductCategory FROM SalesLT.SalesOrderDetail AS sod INNER JOIN SalesLT.SalesOrderHeader AS soh ON sod.SalesOrderID = soh.SalesOrderID INNER JOIN SalesLT.Product AS p ON sod.ProductID = p.ProductID INNER JOIN SalesLT.ProductCategory AS pc ON p.ProductCategoryID = pc.ProductCategoryID GROUP BY soh.OrderDate, pc.Name ORDER BY soh.OrderDate, pc.Name; """ SPEND_QUERY_CUSTOMER = """ SELECT soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) AS spend, pc.Name AS ProductCategory FROM SalesLT.SalesOrderDetail AS sod INNER JOIN SalesLT.SalesOrderHeader AS soh ON sod.SalesOrderID = soh.SalesOrderID INNER JOIN SalesLT.Product AS p ON sod.ProductID = p.ProductID INNER JOIN SalesLT.ProductCategory AS pc ON p.ProductCategoryID = pc.ProductCategoryID WHERE soh.CustomerID = ? GROUP BY soh.OrderDate, pc.Name ORDER BY soh.OrderDate, pc.Name; """ if len(customer) == 0: spend_df = load_data(SPEND_QUERY_ALL) else: customer_id = int(df.loc[customer, 'CustomerID'].values[0]) spend_df = load_data(SPEND_QUERY_CUSTOMER, params=(customer_id,)) st.write("Here's a summary of spend by product category over time:") st.bar_chart(spend_df.set_index('ProductCategory')['spend'], use_container_width=True) if len(customer) > 0: st.write(f"Displaying orders for Customer ID: {df.loc[customer, 'CustomerID'].values[0]}") customer_id = int(df.loc[customer, 'CustomerID'].values[0]) SQL_QUERY = """ SELECT * FROM SalesLT.SalesOrderHeader AS soh WHERE soh.CustomerID = ?; """ st.dataframe(load_data(SQL_QUERY, params=(customer_id,)), hide_index=True, use_container_width=True) SQL_QUERY = """ SELECT sod.* FROM SalesLT.SalesOrderHeader AS soh INNER JOIN SalesLT.SalesOrderDetail AS sod ON soh.SalesOrderID = sod.SalesOrderID WHERE soh.CustomerID = ?; """ st.dataframe(load_data(SQL_QUERY, params=(customer_id,)), hide_index=True, use_container_width=True)Adja hozzá ezt a kódot az importok és a
def page_load() -> None:kód közé._connection = None def get_connection() -> Connection: global _connection if not _connection: load_dotenv() _connection = connect(getenv("SQL_CONNECTION_STRING")) return _connection @st.cache_data def load_data(SQL_QUERY, params=None) -> pd.DataFrame: data = pd.read_sql_query(SQL_QUERY, get_connection(), params=params) return dataKeresse meg ezt a kódot.
def main(): print("Hello from rapid-prototyping-qs!")Cserélje le erre a kódra.
def main() -> None: page_load() if _connection: _connection.close()Mentés és bezárás
main.py.
A kapcsolati sztring mentése
Nyissa meg a
.gitignorefájlt, és adjon hozzá kizárást a fájlokhoz.env. A fájlodnak hasonlónak kell lennie a következő példához.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envMentés és bezárás
.gitignore.Az aktuális könyvtárban hozzon létre egy új fájlt.
.envA
.envfájlban adjon hozzá egy bejegyzést a kapcsolati karakterlánchoz, a következő névvel:SQL_CONNECTION_STRING. Cserélje le a helyőrzőket a tényleges értékekre.SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"A kapcsolati karakterlánc attól függ, milyen típusú SQL adatbázishoz csatlakozol. Azure SQL Database vagy a Fabricben található SQL-adatbázis esetén használd a Kapcsolati sztringek lapról származó ODBC-kapcsolati sztringet, és állítsd be a hitelesítési típust az adott forgatókönyvhöz. További információért a kapcsolati karakterlánc szintaxisáról lásd: Connection strings for mssql-python.
Jótanács
macOS rendszeren mind a
ActiveDirectoryInteractive, mind aActiveDirectoryDefaulthasználható a Microsoft Entra-hitelesítéshez.ActiveDirectoryInteractiveminden alkalommal, amikor futtatja a szkriptet, arra kéri, hogy jelentkezzen be. Az ismétlődő bejelentkezési promptok elkerülése érdekében jelentkezzen be egyszer az Azure CLIaz loginparancsral, és használdActiveDirectoryDefault.ActiveDirectoryDefaultújrahasználja a gyorsítótárban tárolt hitelesítő adatot.
Használja az "uv run" parancsot a szkript futtatásához
A korábban megnyitott terminálablakban vagy egy új terminálablakban futtassa a következő parancsot.
uv run streamlit run main.pyA jelentés megnyílik egy új lapon a webböngészőben.
Próbálja ki a jelentést, hogy lássa, hogyan működik. Ha módosít valamit, mentse
main.pyés használja az újratöltés lehetőséget a böngészőablak jobb felső sarkában.A prototípus megosztásához másolja az összes fájlt, kivéve a
.venvmappát a másik gépre. A.venvmappa az első futtatáskor újra létre lesz hozva.