Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart maak je Streamlit snel een rapport, zodat je vroegtijdig gebruikersfeedback kunt verzamelen. Je gebruikt de mssql-python driver van Python om verbinding te maken met je database en leest de gegevens die in je rapport zijn geladen.
Het mssql-python stuurprogramma vereist geen externe afhankelijkheden op Windows-computers. Het stuurprogramma installeert alles wat het nodig heeft met één pip installatie, zodat u de nieuwste versie van het stuurprogramma voor nieuwe scripts kunt gebruiken zonder dat andere scripts die u niet hoeft te upgraden en te testen, worden onderbroken.
documentatie | mssql-python-broncode | Pakket (PyPI) | Uv
Vereiste voorwaarden
Python 3.10 of hoger.
Als u Nog geen Python hebt, installeert u de Python-runtime en pip-pakketbeheer vanuit python.org.
Wilt u niet uw eigen omgeving gebruiken? Volg Container- en lokale ontwikkeling om een reproduceerbare devcontainer of GitHub Codespaces-omgeving te creëren.
Visual Studio Code met de volgende extensies:
Azure Command-Line Interface (CLI) voor verificatie zonder wachtwoord in macOS en Linux.
Als u dat nog niet hebt
uv, volgt u de installatie-instructies.Een database op SQL Server, Azure SQL Database of SQL Database in Fabric met het
AdventureWorks2025voorbeeldschema en een geldige verbindingsreeks.
Installeer vereisten voor het besturingssysteem
Installeer eenmalige vereisten voor het besturingssysteem. Windows-gebruikers kunnen deze stap overslaan. Voor volledige platformdetails, zie Install mssql-python.
Een SQL-database maken
Maak een SQL-database aan of maak verbinding met een van de volgende platforms:
Het project maken en de code uitvoeren
- Een nieuw project maken
- Afhankelijkheden toevoegen
- Visual Studio Code starten
- Pyproject.toml bijwerken
- Main.py bijwerken
- De verbindingsreeks opslaan
- Uv-uitvoering gebruiken om het script uit te voeren
Een nieuw project maken
Open een opdrachtprompt in uw ontwikkelingsmap. Als je er geen hebt, maak dan een nieuwe map aan, zoals
pythonofscripts. Vermijd mappen op je OneDrive, want synchronisatie kan het beheer van je virtuele omgeving verstoren.Maak een nieuw project met
uv.uv init rapid-prototyping-qs cd rapid-prototyping-qs
Afhankelijkheden toevoegen
Installeer in dezelfde map de mssql-python, streamliten python-dotenv pakketten.
uv add mssql-python python-dotenv streamlit
Visual Studio Code starten
Voer in dezelfde map de volgende opdracht uit.
code .
Pyproject.toml bijwerken
Open het
pyproject.tomlbestand in de editor. Dit bestand bevat de metadata van je project.Werk de
descriptionwaarde bij.description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."Sla het bestand op en sluit het.
Main.py bijwerken
Open het bestand met de naam
main.py. Deze moet vergelijkbaar zijn met dit voorbeeld.def main(): print("Hello from rapid-prototyping-qs!") if __name__ == "__main__": main()Voeg bovenaan het bestand de volgende imports toe vóór de regel met
def main().Aanbeveling
Als Visual Studio Code problemen ondervindt bij het oplossen van pakketten, moet u de interpreter bijwerken om de virtuele omgeving te gebruiken.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection import pandas as pd import streamlit as stVoeg tussen de importbewerkingen en de regel met
def main()de volgende code toe.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)Voeg deze code toe tussen de imports en
def page_load() -> None:._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 dataZoek deze code.
def main(): print("Hello from rapid-prototyping-qs!")Vervang deze door deze code.
def main() -> None: page_load() if _connection: _connection.close()Opslaan en sluiten
main.py.
De verbindingsreeks opslaan
Open het
.gitignorebestand en voeg een uitsluiting toe voor.envbestanden. Je dossier zou vergelijkbaar moeten zijn met het volgende voorbeeld.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envOpslaan en sluiten
.gitignore.Maak in de huidige map een nieuw bestand met de naam
.env.Voeg in het
.envbestand een vermelding toe voor de verbindingsreeks met de naamSQL_CONNECTION_STRING. Vervang de tijdelijke aanduidingen door de werkelijke waarden.SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"De verbindingsreeks hangt af van het type SQL-database waarmee je verbinding maakt. Voor Azure SQL Database of SQL Database in Fabric gebruik je de ODBC-verbindingsreeks van het tabblad verbindingsreekss en pas je het authenticatietype aan voor jouw situatie. Voor meer informatie over de syntaxis van verbindingsreeks, zie Connection strings voor mssql-python.
Aanbeveling
In macOS werken beide
ActiveDirectoryInteractiveenActiveDirectoryDefaultvoor Microsoft Entra-verificatie.ActiveDirectoryInteractiveu wordt gevraagd u aan te melden telkens wanneer u het script uitvoert. Om herhaalde aanmeldprompts te vermijden, log je één keer in met het Azure CLI-commandoaz loginen gebruikActiveDirectoryDefault.ActiveDirectoryDefaultHergebruikt de gecachte inloggegevens.
Gebruik uv run om het script uit te voeren
Voer in het terminalvenster van vóór, of een nieuw terminalvenster dat is geopend in dezelfde map, de volgende opdracht uit.
uv run streamlit run main.pyUw rapport wordt geopend op een nieuw tabblad in uw webbrowser.
Probeer uw rapport om te zien hoe het werkt. Als u iets wijzigt, slaat u
main.pyop en gebruikt u de optie voor opnieuw laden in de rechterbovenhoek van het browservenster.Als u uw prototype wilt delen, kopieert u alle bestanden, met uitzondering van de
.venvmap naar de andere computer. De.venvmap wordt opnieuw gemaakt bij de eerste keer uitvoeren.