Megosztás a következőn keresztül:


Rövid útmutató: Gyors prototípus-készítés a Pythonhoz készült mssql-python illesztőprogrammal

Ebben a rövid útmutatóban Streamlit gyorsan létrehozhat egy jelentést, így gyorsan gyűjthet felhasználói visszajelzéseket, hogy biztosan jó úton járjon. A Python illesztőprogramját mssql-python használva csatlakozhat az adatbázishoz, és beolvassa 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


SQL-adatbázis létrehozása

Ehhez a gyorsindítási útmutatóhoz az AdventureWorks2025 Lightweight sémára van szükség a Microsoft SQL Serveren, a Fabric SQL-adatbázisban vagy az Azure SQL Database-ben.

A projekt létrehozása és a kód futtatása

Új projekt létrehozása

  1. Nyisson meg egy parancssort a fejlesztői címtárban. Ha nem rendelkezik ilyennel, hozzon létre egy új , stb. nevű pythonscriptskönyvtárat. Kerülje a mappákat a OneDrive-on, a szinkronizálás megzavarhatja a virtuális környezet kezelését.

  2. Hozzon létre egy új projektet a uv segí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

  1. A pyproject.toml a projekt metaadatait tartalmazza. Nyissa meg a fájlt a kedvenc szerkesztőjében.

  2. Módosítsa a leírást részletesebbre.

    description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."
    
  3. Mentse és zárja be a fájlt.

Main.py frissítése

  1. Nyissa meg a nevű main.pyfájlt. Ennek hasonlónak kell lennie ehhez a példához.

    def main():
     print("Hello from rapid-protyping-qs!")
    
     if __name__ == "__main__":
       main()
    
  2. A fájl tetején adja hozzá a következő importálásokat a def main() sor fölé.

    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 st
    
  3. Az 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] 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. 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) -> pd.DataFrame:
        data = pd.read_sql_query(SQL_QUERY, get_connection())
        return data
    
  5. Keresse meg ezt a kódot.

    def main():
        print("Hello from rapid-protyping-qs!")
    
  6. Cserélje le erre a kódra.

    def main() -> None:
        page_load()
        if _connection:
            _connection.close()
    
  7. Mentés és bezárás main.py.

A kapcsolati sztring mentése

  1. Nyissa meg a .gitignore fájlt, és adjon hozzá kizárást a fájlokhoz .env . A fájlnak hasonlónak kell lennie ehhez a példához. Mindenképpen mentse és zárja be, ha elkészült.

    # Python-generated files
    __pycache__/
    *.py[oc]
    build/
    dist/
    wheels/
    *.egg-info
    
    # Virtual environments
    .venv
    
    # Connection strings and secrets
    .env
    
  2. Az aktuális könyvtárban hozzon létre egy új fájlt..env

  3. A .env fájlban adjon hozzá egy bejegyzést a kapcsolati karakterlánchoz, a következő névvel: SQL_CONNECTION_STRING. Cserélje le az itt látható példát a valós kapcsolati karakterlánc értékére.

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

    Jótanács

    Az itt használt kapcsolati sztring nagyban függ attól, hogy milyen TÍPUSÚ SQL-adatbázishoz csatlakozik. Ha Azure SQL Database-hez vagy SQL-adatbázishoz csatlakozik a Fabricben, használja az ODBC kapcsolati sztringet a kapcsolati sztringek lapról. Előfordulhat, hogy a forgatókönyvtől függően módosítania kell a hitelesítési típust. A kapcsolati sztringekről és azok szintaxisáról további információt a kapcsolati sztring szintaxisának hivatkozásában talál.

Használja az "uv run" parancsot a szkript futtatásához

Jótanács

A Microsoft Entra-hitelesítés macOS rendszerben való használatához be kell jelentkeznie a Visual Studio Code Azure Repos bővítményével vagy az az login használatával.

  1. A korábban megnyitott terminálablakban vagy egy új terminálablakban futtassa a következő parancsot.

     uv run streamlit run main.py
    
  2. A jelentés megnyílik egy új lapon a webböngészőben.

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

  4. A prototípus megosztásához másolja az összes fájlt, kivéve a .venv mappát a másik gépre. A .venv mappa az első futtatáskor újra létre lesz hozva.

Következő lépés

Látogasson el az mssql-python illesztőprogram GitHub-adattárába további példákért, ötletek megosztásához, vagy problémák jelentéséhez.