Szybki start: nawiązywanie połączenia za pomocą sterownika mssql-python dla języka Python

W tym przewodniku połączysz skrypt języka Python z bazą danych, którą utworzyłeś i wypełniłeś danymi przykładowymi. Sterownik mssql-python dla Pythona służy do łączenia się z twoją bazą danych i wykonywania podstawowych operacji, takich jak odczytywanie i zapisywanie danych.

Sterownik mssql-python nie wymaga żadnych zależności zewnętrznych na maszynach z systemem Windows. Sterownik instaluje wszystko, czego potrzebuje w ramach pojedynczej pip instalacji, co pozwala na użycie najnowszej wersji sterownika dla nowych skryptów bez przerywania innych skryptów, których nie masz czasu na uaktualnienie i przetestowanie.

Używaj przykładu lokalnej autoryzacji SQL z tego artykułu tylko do lokalnego rozwoju na instancji SQL Server, którą kontrolujesz. W przypadku Azure SQL Database, baz danych SQL w usłudze Fabric, współdzielonych środowisk deweloperskich, CI oraz wdrożeń produkcyjnych zacznij od korzystania z uwierzytelniania Microsoft Entra lub innego mechanizmu bezhasłowego.

Dokumentacja mssql-python Kod źródłowy mssql-python Pakiet (PyPI)Visual Studio Code

Wymagania wstępne

Utwórz lub połącz się z bazą danych na SQL Server, Azure SQL Database lub bazie SQL w Fabric. Użyj poniższych kroków, aby skonfigurować bazę danych z przykładowym AdventureWorks2025 schematem i zachowaj parametry połączenia na później.

Tworzenie bazy danych SQL

Stwórz lub połącz się z bazą danych SQL na jednej z następujących platform:

Konfiguracja

Wykonaj następujące kroki, aby skonfigurować środowisko deweloperskie do tworzenia aplikacji przy użyciu mssql-python sterownika języka Python.

Uwaga / Notatka

Ten sterownik wykorzystuje protokół Tabular Data Stream (TDS). SQL Server, baza danych SQL w Fabric oraz Azure SQL Database domyślnie włączają TDS, więc nie jest potrzebna dodatkowa konfiguracja.

Instalowanie pakietu mssql-python

mssql-python Pobierz pakiet z PyPI.

  1. Otwórz wiersz polecenia w pustym katalogu.

  2. Zainstaluj pakiet mssql-python.

    pip install mssql-python
    

Zainstalować pakiet python-dotenv

Pobierz pakiet python-dotenv z PyPI.

  1. W tym samym katalogu zainstaluj pakiet python-dotenv.

    pip install python-dotenv
    

Sprawdzanie zainstalowanych pakietów

Możesz użyć narzędzia wiersza polecenia PyPI, aby sprawdzić, czy są zainstalowane zamierzone pakiety.

  1. Sprawdź listę zainstalowanych pakietów za pomocą polecenia pip list.

    pip list
    

Uruchamianie kodu

Tworzenie nowego pliku

  1. Utwórz nowy plik o nazwie app.py.

  2. Dodaj docstring modułu.

    """
    Connects to a SQL database using mssql-python
    """
    
  3. Importuj pakiety, w tym mssql-python.

    from os import getenv
    from dotenv import load_dotenv
    from mssql_python import connect
    
  4. mssql-python.connect Użyj funkcji , aby nawiązać połączenie z bazą danych SQL.

    load_dotenv()
    conn = connect(getenv("SQL_CONNECTION_STRING"))
    
  5. W bieżącym katalogu utwórz nowy plik o nazwie .env.

  6. W pliku .env dodaj wpis dla łańcucha połączenia o nazwie SQL_CONNECTION_STRING. Użyj jednego z poniższych przykładów i zastąp symbole zastępcze rzeczywistymi wartościami.

    Dla Azure SQL Database lub SQL database in Fabric, zacznij od uwierzytelniania Microsoft Entra:

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

    Dla lokalnego SQL Server podczas tworzenia zacznij od uwierzytelniania SQL:

    SQL_CONNECTION_STRING="Server=localhost,1433;Database=<database_name>;UID=<username>;PWD=<password>;Encrypt=yes;TrustServerCertificate=yes"
    

    Caution

    Traktuj .env to jako lokalną wygodę rozwoju, a nie mechanizm wdrożenia. Nigdy go nie commituj, nigdy nie używaj tego przykładu uwierzytelniania SQL w środowiskach współdzielonych lub produkcyjnych i utrzymuj walidację certyfikatów włączoną poza lokalnym programem.

    Użyj parametrów połączenia, aby dostosować przykład do nazwanych instancji, kontenerów lub zaawansowanych ustawień. Jeśli nawiązujesz połączenie z usługą Azure SQL Database lub bazą danych SQL w usłudze Fabric, użyj uwierzytelniania Microsoft Entra, aby korzystać z opcji logowania bez hasła i logowania interaktywnego. Szersze wytyczne dotyczące tajemnic i certyfikatów znajdziesz w najlepszych praktykach bezpieczeństwa.

Wykonywanie zapytania

Użyj ciągu zapytania SQL, aby wykonać zapytanie i przeanalizować wyniki.

  1. Utwórz zmienną dla ciągu zapytania SQL.

    SQL_QUERY = """
    SELECT
    TOP 5 c.CustomerID,
    c.CompanyName,
    COUNT(soh.SalesOrderID) AS OrderCount
    FROM
    SalesLT.Customer AS c
    LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID
    GROUP BY
    c.CustomerID,
    c.CompanyName
    ORDER BY
    OrderCount DESC;
    """
    
  2. Użyj cursor.execute polecenia , aby pobrać zestaw wyników z zapytania względem bazy danych.

    cursor = conn.cursor()
    cursor.execute(SQL_QUERY)
    

    Uwaga / Notatka

    Funkcja ta zasadniczo akceptuje dowolne zapytanie i zwraca zbiór wyników. Aby przejść przez zbiór wyników, użyj kursor.fetchone().

  3. Użyj cursor.fetchall z pętlą for, aby pobrać wszystkie rekordy z bazy danych. Następnie wydrukuj dokumenty.

    records = cursor.fetchall()
    for r in records:
      print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")
    
  4. app.py plik.

    Wskazówka

    Zarówno ActiveDirectoryInteractive, jak i ActiveDirectoryDefault działają na systemie macOS do uwierzytelniania Microsoft Entra. ActiveDirectoryInteractive monituje o zalogowanie się przy każdym uruchomieniu skryptu. Aby uniknąć powtarzających się monitów logowania, zaloguj się raz za pomocą Azure CLI, uruchamiając az login, a następnie użyj ActiveDirectoryDefault, które ponownie wykorzystuje poświadczenia zapisane w pamięci podręcznej.

  5. Otwórz terminal i przetestuj aplikację.

    python app.py
    

    Oto oczekiwane dane wyjściowe.

    29485   1       Professional Sales and Service
    29531   1       Remarkable Bike Store
    29546   1       Bulk Discount Store
    29568   1       Coalition Bike Company
    29584   1       Futuristic Bikes
    

Wstaw wiersz jako transakcję

Bezpiecznie wykonaj instrukcję INSERT i przekaż parametry. Przekazywanie parametrów jako wartości chroni aplikację przed atakami polegającymi na wstrzyknięciu kodu SQL .

  1. Dodaj import randrange z biblioteki random na początku app.py.

    from random import randrange
    
  2. Na końcu app.py dodaj kod w celu wygenerowania losowego numeru produktu.

    productNumber = randrange(1000)
    

    Wskazówka

    Generowanie losowego numeru produktu w tym miejscu gwarantuje, że można uruchomić ten przykład wiele razy.

  3. Utwórz ciąg instrukcji SQL.

    SQL_STATEMENT = """
    INSERT SalesLT.Product (
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
    ) OUTPUT INSERTED.ProductID
    VALUES (%(name)s, %(product_number)s, %(standard_cost)s, %(list_price)s, CURRENT_TIMESTAMP)
    """
    
  4. Wykonaj instrukcję przy użyciu polecenia cursor.execute.

    cursor.execute(
       SQL_STATEMENT,
       {
          'name': f'Example Product {productNumber}',
          'product_number': f'EXAMPLE-{productNumber}',
          'standard_cost': 100,
          'list_price': 200
       }
    )
    
  5. Pobierz pojedynczy wynik przy użyciu metody cursor.fetchone, wyświetl unikatowy identyfikator wyniku, a następnie zatwierdź operację jako transakcję przy użyciu polecenia connection.commit.

    result = cursor.fetchone()
    print(f"Inserted Product ID : {result.ProductID}")
    conn.commit()
    

    Wskazówka

    Opcjonalnie możesz użyć connection.rollback polecenia , aby wycofać transakcję.

  6. Zamknij kursor i połączenie za pomocą polecenia cursor.close i connection.close.

    cursor.close()
    conn.close()
    
  7. app.py plik i ponownie przetestuj aplikację.

    python app.py
    

    Oto oczekiwane dane wyjściowe.

    Inserted Product ID : 1001
    

Następne kroki

Wykorzystaj te artykuły, aby dalej budować: