このクイックスタートでは、Visual Studio CodeのJupyter Notebookを使って、ビジネスインサイトを素早く抽出しましょう。 Pythonのmssql-pythonドライバーを使ってSQLデータベースに接続し、データを読み取り、メール、レポート、プレゼンテーションで使うためのフォーマットを行ってください。
mssql-python ドライバーでは、Windows マシンへの外部依存関係は必要ありません。 ドライバーは、1 つの pip インストールで必要なすべてのものをインストールします。これにより、アップグレードとテストの時間がない他のスクリプトを中断することなく、新しいスクリプトに最新バージョンのドライバーを使用できます。
mssql-python のドキュメント | mssql-python ソース コード | パッケージ (PyPI) | Visual Studio Code
[前提条件]
Python 3.10 以降。
Python をまだお持ちでない場合は、python.org から Python ランタイムと pip パッケージ マネージャーをインストールします。
自分の環境を使いたくないですか? コンテナやローカル開発に従って、再現可能な開発コンテナやGitHub Codespaces環境を作成しましょう。
Visual Studio Code と次の拡張機能:
macOS および Linux でのパスワードレス認証用の Azure Command-Line インターフェイス (CLI)。
uvがまだない場合は、インストール手順に従います。Fabric の SQL Server、Azure SQL Database、または SQL データベースにある、
AdventureWorks2025サンプルスキーマと有効な接続文字列を備えたデータベース。
オペレーティングシステムをインストールするための前提条件
オペレーティング システム固有の 1 回限りの前提条件をインストールします。 Windowsユーザーはこのステップをスキップできます。 プラットフォームの詳細は 「Install mssql-python」をご覧ください。
SQL データベースを作成する
以下のいずれかのプラットフォームでSQLデータベースを作成または接続してください:
プロジェクトを作成してコードを実行する
- 新しいプロジェクトを作成する
- 依存関係の追加
- Visual Studio Code を起動する
- pyproject.toml を更新する
- 接続文字列を保存する
- Jupyter Notebook を作成する
- テーブルに結果を表示する
- グラフに結果を表示する
新しいプロジェクトを作成する
開発ディレクトリでコマンド プロンプトを開きます。 もし持っていなければ、
pythonやscriptsなどの新しいディレクトリを作成しましょう。 OneDriveのフォルダは避けてください。同期が仮想環境の管理に支障をきたす可能性があります。-
uv init jupyter-notebook-qs cd jupyter-notebook-qs
依存関係を追加する
同じディレクトリに、 mssql-python、 python-dotenv、 rich、 pandas、および matplotlib パッケージをインストールします。 次に、 ipykernel と uv を開発依存関係として追加します。 VS Codeはノートブックセルの実行に ipykernel が必要で、セル内のパッケージ管理 uv が必要です。
uv add mssql-python python-dotenv rich pandas matplotlib
uv add --dev ipykernel
uv add --dev uv
Visual Studio Code を起動します
同じディレクトリで、次のコマンドを実行します。
code .
pyproject.toml を更新する
エディターで
pyproject.tomlファイルを開きます。 このファイルにはプロジェクトのメタデータが含まれています。description値を更新してください。description = "A quick example using the mssql-python driver and Jupyter Notebooks."ファイルを保存して閉じます。
接続文字列を保存する
.gitignoreファイルを開き、.envファイルの除外を追加します。 あなたのファイルは以下の例に似ているはずです。# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .env.gitignoreを保存して閉じます。現在のディレクトリに、
.envという名前の新しいファイルを作成します。.envファイル内に、SQL_CONNECTION_STRINGという名前の接続文字列のエントリを追加します。 プレースホルダーを実際の値に置き換えます。SQL_CONNECTION_STRING="Server=<server>;Database=<database>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"接続文字列は接続しているSQLデータベースの種類によって異なります。 Azure SQL DatabaseやFabricのSQL Databaseでは、接続文字列タブのODBCの接続文字列を使い、シナリオに合わせて認証タイプを調整してください。 接続文字列の構文の詳細については、「mssql-python 用の接続文字列」を参照してください。
ヒント
macOS では、
ActiveDirectoryInteractiveとActiveDirectoryDefaultの両方が Microsoft Entra 認証で機能します。ActiveDirectoryInteractiveスクリプトを実行するたびにサインインするように求められます。 繰り返しサインインを求めるプロンプトを避けるため、Azure CLIaz loginコマンドで一度サインインし、ActiveDirectoryDefaultを使用します。ActiveDirectoryDefaultキャッシュされた認証情報を再利用します。
Jupyter Notebook を作成する
一覧から [ ファイル] を選択し、[ 新しいファイル ] と [Jupyter Notebook ] を選択します。 新しいノートブックが開きます。
[ ファイル]、[ 名前を付けて保存... ] の順に選択し、新しいノートブックに名前を付けます。
最初のセルに次のインポートを追加します。
from os import getenv from mssql_python import connect from dotenv import load_dotenv from rich.console import Console from rich.table import Table import pandas as pd import matplotlib.pyplot as pltノートブックの上部にある [+ マークダウン ] ボタンを使用して、新しいマークダウン セルを追加します。
新しいマークダウン セルに次のテキストを追加します。
## Define queries for use laterセル ツールバーで チェック マーク を選択するか、キーボード ショートカット
Ctrl+EnterまたはShift+Enterを使用してマークダウン セルをレンダリングします。ノートブックの上部にある [+ コード ] ボタンを使用して、新しいコード セルを追加します。
新しいコード セルに次のコードを追加します。
SQL_QUERY_ORDERS_BY_CUSTOMER = """ 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; """ SQL_QUERY_SPEND_BY_CATEGORY = """ SELECT TOP 10 pc.Name AS ProductCategory, SUM(sod.OrderQty * sod.UnitPrice) AS Spend 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 pc.Name ORDER BY Spend; """
テーブルに結果を表示する
ノートブックの上部にある [+ マークダウン ] ボタンを使用して、新しいマークダウン セルを追加します。
新しいマークダウン セルに次のテキストを追加します。
## Print orders by customer and display in a tableセル ツールバーで チェック マーク を選択するか、キーボード ショートカット
Ctrl+EnterまたはShift+Enterを使用してマークダウン セルをレンダリングします。ノートブックの上部にある [+ コード ] ボタンを使用して、新しいコード セルを追加します。
新しいコード セルに次のコードを追加します。
load_dotenv() with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore with conn.cursor() as cursor: cursor.execute(SQL_QUERY_ORDERS_BY_CUSTOMER) if cursor: table = Table(title="Orders by Customer") # https://rich.readthedocs.io/en/stable/appendix/colors.html table.add_column("Customer ID", style="bright_blue", justify="center") table.add_column("Company Name", style="bright_white", justify="left") table.add_column("Order Count", style="bold green", justify="right") records = cursor.fetchall() for r in records: table.add_row(f"{r.CustomerID}", f"{r.CompanyName}", f"{r.OrderCount}") Console().print(table)ノートブックの上部にある [ すべて実行 ] ボタンを使用して、ノートブックを実行します。
プロンプトが表示されたら 、jupyter-notebook-qs カーネルを選択します。
グラフに結果を表示する
前のセルの出力を確認しましょう。 3 つの列と 5 つの行を含むテーブルが表示されます。
ノートブックの上部にある [+ マークダウン ] ボタンを使用して、新しいマークダウン セルを追加します。
新しいマークダウン セルに次のテキストを追加します。
## Display spend by category in a horizontal bar chartセル ツールバーで チェック マーク を選択するか、キーボード ショートカット
Ctrl+EnterまたはShift+Enterを使用してマークダウン セルをレンダリングします。ノートブックの上部にある [+ コード ] ボタンを使用して、新しいコード セルを追加します。
新しいコード セルに次のコードを追加します。
with connect(getenv("SQL_CONNECTION_STRING")) as conn: # type: ignore data = pd.read_sql_query(SQL_QUERY_SPEND_BY_CATEGORY, conn) # Set the style - use print(plt.style.available) to see all options plt.style.use('seaborn-v0_8-notebook') plt.barh(data['ProductCategory'], data['Spend'])[セルの実行] ボタンまたは
Ctrl+Alt+Enterを使用してセルを実行します。グラフを確認してください。