このクイック スタートでは、 uv を使用して、サンプル データを作成して読み込んだデータベースに接続する Python スクリプトのプロジェクトの依存関係と環境を管理します。 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 mssql-python-repeatable-qs cd mssql-python-repeatable-qs
依存関係の追加
同じディレクトリに、 mssql-python、 python-dotenv、および rich パッケージをインストールします。
uv add mssql-python python-dotenv rich
Visual Studio Code を起動します
同じディレクトリで、次のコマンドを実行します。
code .
pyproject.toml を更新する
pyproject.toml には、プロジェクトのメタデータが含まれています。 お気に入りのエディターでファイルを開きます。
ファイルの内容を確認します。 この例のようになります。
mssql-pythonの Python のバージョンと依存関係では、>=を使用して最小バージョンを定義します。 正確なバージョンを使用する場合は、バージョン番号の前の>=を==に変更します。 その後、各パッケージの解決済みバージョンが uv.lock に格納されます。 lockfile を使用すると、プロジェクトに取り組む開発者が一貫したパッケージ バージョンを使用できるようになります。 また、エンド ユーザーにパッケージを配布するときに、まったく同じパッケージ バージョンのセットが使用されるようになります。uv.lockファイルは編集しないでください。[project] name = "mssql-python-repeatable-qs" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = [ "mssql-python>=0.10.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]説明をよりわかりやすいものに更新します。
description = "Connects to a SQL database using mssql-python"ファイルを保存して閉じます。
main.py の更新
main.pyという名前のファイルを開きます。 この例のようになります。def main(): print("Hello from mssql-python-repeatable-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, Cursor from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table from argparse import ArgumentParser from time import sleepインポートと
def main()行の間に、次のコードを追加します。def get_results(sleep_time: int = 0) -> None: with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), transient=True, ) as progress: task = progress.add_task( description="Connecting to SQL...") cursor = query_sql() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.update(task, description="Formatting results...") 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}") if cursor: cursor.close() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.stop() Console().print(table)インポートと
def get_results(sleep_time: int = 0) -> None:の間に、このコードを追加します。_connection = None def get_connection() -> Connection: global _connection if not _connection: load_dotenv() _connection = connect(getenv("SQL_CONNECTION_STRING")) # type: ignore return _connection def query_sql() -> Cursor: 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; """ conn = get_connection() cursor = conn.cursor() cursor.execute(SQL_QUERY) return cursorこのコードを見つけなさい。
def main(): print("Hello from test!")これをこのコードに置き換えます。
def main() -> None: parser = ArgumentParser() parser.add_argument("--sleep-time", type=int, default=0, help="Time to sleep in seconds to simulate slow connection") args = parser.parse_args() if args.sleep_time > 0: get_results(args.sleep_time) else: get_results() 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 main.py次に、もう一度実行しますが、両方の状態の更新を確認できるように、よりゆっくりとしましょう。
uv run main.py --sleep-time 5スクリプトが完了したときに予想される出力を次に示します。
Orders by Customer ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Customer ID ┃ Company Name ┃ Order Count ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ 29485 │ Professional Sales and Service │ 1 │ │ 29531 │ Remarkable Bike Store │ 1 │ │ 29546 │ Bulk Discount Store │ 1 │ │ 29568 │ Coalition Bike Company │ 1 │ │ 29584 │ Futuristic Bikes │ 1 │ └─────────────┴────────────────────────────────┴─────────────┘スクリプトを別のコンピューターにデプロイするには、
.venvフォルダーを除くすべてのファイルを他のコンピューターにコピーします。 仮想環境は、最初の実行で再作成されます。
次のステップ
その他の例については、 mssql-python ドライバーの GitHub リポジトリを参照して、アイデアの投稿や問題の報告を行います。