Delen via


Quickstart: Snelle prototypen met het mssql-python-stuurprogramma voor Python

In deze quickstart gebruikt Streamlit u om snel een rapport te maken, zodat u snel gebruikersfeedback kunt verzamelen om ervoor te zorgen dat u op het juiste spoor bent. U gebruikt het mssql-python stuurprogramma voor Python om verbinding te maken met uw database en de gegevens te lezen die in uw 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


Een SQL-database maken

Voor deze quickstart is het AdventureWorks2025 Lightweight-schema vereist, in Microsoft SQL Server, SQL Database in Fabric of Azure SQL Database.

Het project maken en de code uitvoeren

Een nieuw project maken

  1. Open een opdrachtprompt in uw ontwikkelingsmap. Als u geen map hebt, maakt u een nieuwe map met de naam python, scriptsenzovoort. Vermijd mappen in uw OneDrive, dan kan de synchronisatie het beheer van uw virtuele omgeving verstoren.

  2. 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

  1. Het pyproject.toml bevat de metagegevens voor uw project. Open het bestand in uw favoriete editor.

  2. Werk de beschrijving bij zodat deze meer beschrijvend is.

    description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."
    
  3. Sla het bestand op en sluit het.

Main.py bijwerken

  1. Open het bestand met de naam main.py. Deze moet vergelijkbaar zijn met dit voorbeeld.

    def main():
     print("Hello from rapid-protyping-qs!")
    
     if __name__ == "__main__":
       main()
    
  2. Voeg boven aan het bestand de volgende importen toe boven 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 st
    
  3. Voeg 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] 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')
    
  4. 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) -> pd.DataFrame:
        data = pd.read_sql_query(SQL_QUERY, get_connection())
        return data
    
  5. Zoek deze code.

    def main():
        print("Hello from rapid-protyping-qs!")
    
  6. Vervang deze door deze code.

    def main() -> None:
        page_load()
        if _connection:
            _connection.close()
    
  7. Opslaan en sluiten main.py.

De verbindingsreeks opslaan

  1. Open het .gitignore bestand en voeg een uitsluiting toe voor .env bestanden. Het bestand moet er ongeveer uitzien als in dit voorbeeld. Zorg ervoor dat u deze opslaat en sluit wanneer u klaar bent.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Maak in de huidige map een nieuw bestand met de naam .env.

  3. Voeg in het .env bestand een vermelding toe voor de verbindingsreeks met de naam SQL_CONNECTION_STRING. Vervang het voorbeeld hier door de werkelijke verbindingsreekswaarde.

    SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"
    

    Aanbeveling

    De hier gebruikte verbindingsreeks is grotendeels afhankelijk van het type SQL-database waarmee u verbinding maakt. Als u verbinding maakt met een Azure SQL Database of een SQL-database in Fabric, gebruikt u de ODBC-verbindingsreeks op het tabblad Verbindingsreeksen. Mogelijk moet u het verificatietype aanpassen, afhankelijk van uw scenario. Zie de naslaginformatie over de syntaxis van de verbindingsreeks voor meer informatie over verbindingsreeksen en de bijbehorende syntaxis.

Gebruik uv run om het script uit te voeren

Aanbeveling

Om Microsoft Entra-verificatie op macOS te gebruiken, moet u inloggen via de Azure Repos-extensie in Visual Studio Code of door az login uit te voeren via de Azure Command-Line Interface (CLI).

  1. 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.py
    
  2. Uw rapport wordt geopend op een nieuw tabblad in uw webbrowser.

  3. Probeer uw rapport om te zien hoe het werkt. Als u iets wijzigt, slaat u main.py op en gebruikt u de optie voor opnieuw laden in de rechterbovenhoek van het browservenster.

  4. Als u uw prototype wilt delen, kopieert u alle bestanden, met uitzondering van de .venv map naar de andere computer. De .venv map wordt opnieuw gemaakt bij de eerste keer uitvoeren.

Volgende stap

Ga naar de GitHub-opslagplaats van het mssql-python stuurprogramma voor meer voorbeelden, om ideeën bij te dragen of problemen te rapporteren.