Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten använder Streamlit du för att snabbt skapa en rapport, så att du snabbt kan samla in användarfeedback för att säkerställa att du är på rätt spår. Du använder mssql-python drivrutinen för Python för att ansluta till databasen och läsa in data som lästs in i rapporten.
Drivrutinen mssql-python kräver inga externa beroenden på Windows-datorer. Drivrutinen installerar allt som behövs med en enda pip installation, så att du kan använda den senaste versionen av drivrutinen för nya skript utan att bryta andra skript som du inte har tid att uppgradera och testa.
mssql-python-dokumentation | mssql-python-källkod | Paket (PyPi) | Uv
Förutsättningar
Python 3
Om du inte redan har Python installerar du Pakethanteraren python runtime och Python Package Index (PyPI) från python.org.
Föredrar du att slippa använda din egen miljö? Öppna som en devcontainer med hjälp av GitHub Codespaces.
Visual Studio Code med följande tillägg:
Python-tillägg för Visual Studio Code
Om du inte redan har
uvinstalleraruvdu genom att följa anvisningarna från https://docs.astral.sh/uv/getting-started/installation/.En databas på SQL Server, Azure SQL Database eller SQL Database i Fabric med
AdventureWorks2022exempelschemat och en giltig anslutningssträng.Installera operativsystemsspecifika engångsförutsättningar.
Skapa en SQL-databas
Den här snabbstarten kräver AdventureWorks2022 Lightweight-schemat på Microsoft SQL Server, SQL Database i Fabric eller Azure SQL Database.
Skapa projektet och kör koden
- Skapa ett nytt projekt
- Lägga till beroenden
- Starta Visual Studio Code
- Uppdatera pyproject.toml
- Uppdatera main.py
- Spara anslutningssträngen
- Använd uv run för att köra skriptet
Skapa ett nytt projekt
Öppna en kommandotolk i utvecklingskatalogen. Om du inte har en, skapar du en ny katalog med namnet
python,scriptsosv. Undvik mappar på Din OneDrive kan synkroniseringen störa hanteringen av din virtuella miljö.Skapa ett nytt projekt med
uv.uv init rapid-prototyping-qs cd rapid-prototyping-qs
Lägga till beroenden
Installera paketen mssql-python, streamlitoch python-dotenv i samma katalog.
uv add mssql-python python-dotenv streamlit
Öppna Visual Studio Code
Kör följande kommando i samma katalog.
code .
Uppdatera pyproject.toml
pyproject.toml innehåller metadata för projektet. Öppna filen i din favoritredigerare.
Uppdatera beskrivningen så att den blir mer beskrivande.
description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."Spara och stäng filen.
Uppdatera main.py
Öppna filen med namnet
main.py. Det bör likna det här exemplet.def main(): print("Hello from rapid-protyping-qs!") if __name__ == "__main__": main()Överst i filen lägger du till följande importer ovanför raden med
def main().Tips/Råd
Om Visual Studio Code har problem med att lösa paket måste du uppdatera tolken så att den använder den virtuella miljön.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection import pandas as pd import streamlit as stMellan importerna och raden med
def main()lägger du till följande kod.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] c inner join SalesLT.SalesOrderHeader soh on c.CustomerId = soh.CustomerId;""" df = load_data(SQL_QUERY) event = st.dataframe( df, width='stretch', hide_index=True, on_select="rerun", selection_mode="single-row" ) customer = event.selection.rows if len(customer) == 0: SQL_QUERY = """select soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) as spend, pc.Name as ProductCategory from SalesLT.SalesOrderDetail sod inner join SalesLt.SalesOrderHeader soh on sod. salesorderid = soh.salesorderid inner join SalesLt.Product p on sod.productid = p.productid inner join SalesLT.ProductCategory pc on p.ProductCategoryID = pc.ProductCategoryID GROUP BY soh.OrderDate, pc.Name ORDER BY soh.OrderDate, pc.Name;""" else: SQL_QUERY = f"""select soh.OrderDate, SUM(sod.OrderQty), SUM(sod.OrderQty * sod.UnitPrice) as spend, pc.Name as ProductCategory from SalesLT.SalesOrderDetail sod inner join SalesLt.SalesOrderHeader soh on sod. salesorderid = soh.salesorderid inner join SalesLt.Product p on sod.productid = p.productid inner join SalesLT.ProductCategory pc on p.ProductCategoryID = pc.ProductCategoryID where soh.CustomerID = {df.loc [customer, 'CustomerID'].values[0]} GROUP BY soh.OrderDate, pc.Name ORDER BY soh.OrderDate, pc.Name;""" st.write("Here's a summary of spend by product category over time:") st.bar_chart(load_data(SQL_QUERY).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]}") SQL_QUERY = f"""SELECT * FROM [SalesLT].[SalesOrderHeader] soh WHERE soh.CustomerID = {df.loc[customer, 'CustomerID'].values[0]};""" st.dataframe(load_data(SQL_QUERY), hide_index=True, width='stretch') SQL_QUERY = f"""SELECT sod.* FROM [SalesLT].[SalesOrderHeader] soh INNER JOIN SalesLT.SalesOrderDetail sod on soh.SalesOrderId = sod.SalesOrderId WHERE CustomerID = {df.loc[customer, 'CustomerID'].values[0]};""" st.dataframe(load_data(SQL_QUERY), hide_index=True, width='stretch')Mellan importerna och
def page_load() -> None:lägger du till den här koden._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) -> pd.DataFrame: data = pd.read_sql_query(SQL_QUERY, get_connection()) return dataHitta den här koden.
def main(): print("Hello from rapid-protyping-qs!")Ersätt den med den här koden.
def main() -> None: page_load() if _connection: _connection.close()Spara och stäng
main.py.
Spara anslutningssträngen
.gitignoreÖppna filen och lägg till ett undantag för.envfiler. Filen bör likna det här exemplet. Se till att spara och stänga den när du är klar.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envI den aktuella katalogen skapar du en ny fil med namnet
.env.I
.env-filen lägger du till en post för din anslutningssträng med namnetSQL_CONNECTION_STRING. Ersätt exemplet här med det faktiska anslutningssträngsvärdet.SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Tips/Råd
Anslutningssträngen som används här beror till stor del på vilken typ av SQL-databas du ansluter till. Om du ansluter till en Azure SQL Database eller en SQL-databas i Fabric använder du ODBC-anslutningssträngen från fliken Anslutningssträngar. Du kan behöva justera autentiseringstypen beroende på ditt scenario. Mer information om anslutningssträngar och deras syntax finns i referens för anslutningssträngssyntax.
Använd uv run för att köra skriptet
Tips/Råd
Om du vill använda Microsoft Entra-autentisering i macOS måste du vara inloggad via antingen Azure Repos-tillägget i Visual Studio Code eller genom att köra az login via Azure Command-Line Interface (CLI).
Kör följande kommando i terminalfönstret från tidigare eller ett nytt terminalfönster som är öppet till samma katalog.
uv run streamlit run main.pyRapporten öppnas på en ny flik i webbläsaren.
Prova rapporten för att se hur den fungerar. Om du ändrar något, spara
main.pyoch använd alternativet uppdatera i det övre högra hörnet av webbläsarfönstret.Om du vill dela prototypen
.venvkopierar du alla filer förutom mappen till den andra datorn. Mappen.venvåterskapas med den första körningen.
Nästa steg
mssql-python Besök GitHub-drivrutinslagringsplatsen för drivrutiner för fler exempel för att bidra med idéer eller rapportera problem.