このクイック スタートでは、 Streamlit を使用してレポートをすばやく作成します。これにより、ユーザーフィードバックをすばやく収集して、正しい軌道に乗っていることを確認できます。Python 用 mssql-python ドライバーを使用してデータベースに接続し、レポートに読み込まれたデータを読み取ります。
mssql-python ドライバーでは、Windows マシンへの外部依存関係は必要ありません。 ドライバーは、1 つの pip インストールで必要なすべてのものをインストールします。これにより、アップグレードとテストの時間がない他のスクリプトを中断することなく、新しいスクリプトに最新バージョンのドライバーを使用できます。
mssql-python のドキュメント | mssql-python ソース コード | Package (PyPi) | uv
[前提条件]
Python 3
Python をまだお持ちでない場合は、python ランタイムと Python Package Index (PyPI) パッケージ マネージャーを python.org からインストールします。
独自の環境を使用したくないですか? GitHub Codespaces を使用して devcontainer として開きます。
Visual Studio Code と次の拡張機能:
uvがまだない場合は、uvの手順に従ってhttps://docs.astral.sh/uv/getting-started/installation/をインストールします。Fabric の SQL Server、Azure SQL Database、または SQL データベースにある、
AdventureWorks2025サンプルスキーマと有効な接続文字列を備えたデータベース。オペレーティング システム固有の 1 回限りの前提条件をインストールします。
SQL データベースを作成する
このクイック スタートでは、Microsoft SQL Server の AdventureWorks2025 ライトウェイト スキーマ、Fabric の SQL データベース、または Azure SQL Database が必要です。
プロジェクトを作成してコードを実行する
- 新しいプロジェクトを作成する
- 依存関係の追加
- Visual Studio Code を起動する
- pyproject.toml を更新する
- main.py の更新
- 接続文字列を保存する
- uv run を使用してスクリプトを実行する
新しいプロジェクトを作成する
開発ディレクトリでコマンド プロンプトを開きます。 お持ちでない場合は、
python、scriptsなどの名前の新しいディレクトリを作成します。OneDrive 上のフォルダーを避け、同期によって仮想環境の管理が妨げられる可能性があります。-
uv init rapid-prototyping-qs cd rapid-prototyping-qs
依存関係の追加
同じディレクトリに、 mssql-python、 streamlit、および python-dotenv パッケージをインストールします。
uv add mssql-python python-dotenv streamlit
Visual Studio Code を起動します
同じディレクトリで、次のコマンドを実行します。
code .
pyproject.toml を更新する
pyproject.toml には、プロジェクトのメタデータが含まれています。 お気に入りのエディターでファイルを開きます。
説明をよりわかりやすいものに更新します。
description = "A quick example of rapid prototyping using the mssql-python driver and Streamlit."ファイルを保存して閉じます。
main.py の更新
main.pyという名前のファイルを開きます。 この例のようになります。def main(): print("Hello from rapid-protyping-qs!") if __name__ == "__main__": main()ファイルの先頭に、
def main()行の上に次のインポートを追加します。ヒント
Visual Studio Code でパッケージの解決に問題がある場合は、 インタープリターを更新して仮想環境を使用する必要があります。
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection import pandas as pd import streamlit as stインポートと
def main()行の間に、次のコードを追加します。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')インポートと
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このコードを見つけなさい。
def main(): print("Hello from rapid-protyping-qs!")これをこのコードに置き換えます。
def main() -> None: page_load() if _connection: _connection.close()main.pyを保存して閉じます。
接続文字列を保存する
.gitignoreファイルを開き、.envファイルの除外を追加します。 ファイルは次の例のようになります。 完了したら、必ず保存して閉じてください。# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .env現在のディレクトリに、
.envという名前の新しいファイルを作成します。.envファイル内に、SQL_CONNECTION_STRINGという名前の接続文字列のエントリを追加します。 ここでの例を実際の接続文字列の値に置き換えます。SQL_CONNECTION_STRING="Server=<server_name>;Database={<database_name>};Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"ヒント
ここで使用される接続文字列は、接続先の SQL データベースの種類によって大きく異なります。 Fabric で Azure SQL Database または SQL データベースに接続する場合は、[接続文字列] タブから ODBC 接続文字列を使用します。シナリオによっては、認証の種類の調整が必要になる場合があります。 接続文字列とその構文の詳細については、 接続文字列の構文リファレンスを参照してください。
uv run を使用してスクリプトを実行する
ヒント
macOS で Microsoft Entra Authentication を使用するには、Visual Studio Code の Azure Repos 拡張機能を使用するか、Azure az login 経由でを実行してログインする必要があります。
以前のターミナル ウィンドウで、または同じディレクトリに対して新しいターミナル ウィンドウを開き、次のコマンドを実行します。
uv run streamlit run main.pyレポートが Web ブラウザーの新しいタブで開きます。
レポートを試して、そのしくみを確認してください。 何かを変更する場合は、
main.py保存し、ブラウザー ウィンドウの右上隅にある再読み込みオプションを使用します。プロトタイプを共有するには、
.venvフォルダーを除くすべてのファイルを他のコンピューターにコピーします。.venvフォルダーは、最初の実行で再作成されます。
次のステップ
その他の例については、 mssql-python ドライバーの GitHub リポジトリを参照して、アイデアの投稿や問題の報告を行います。