Python と Pyodbc を使用して Microsoft SQL Server に接続する

Vaibhav Vaibhav 2022年3月19日
Python と Pyodbc を使用して Microsoft SQL Server に接続する

Microsoft SQL Server は、リレーショナルデータベース管理システムまたは略して RDBMS です。名前が示すように、それはマイクロソフトによって開発され、C/C++ で書かれています。これは、ユーザーが SQL または構造化照会言語を使用してリレーショナルデータベースと対話できるようにするツールです。

実際のアプリケーションを使用する場合、大量のデータを処理する必要があります。データは毎秒更新、作成、削除する必要があり、これらの RDBMS はインテリジェントで堅牢であるため、このような操作を迅速かつ安全に処理できます。

現在、アプリケーションはさまざまなプログラミング言語を使用して開発されています。つまり、各プログラミング言語には、これらの RDBMS に接続し、データベース内に格納されているデータにアクセスする方法が必要です。これらの方法には、ORM またはオブジェクトリレーショナルマッピングライブラリと Open Database Connectivity または ODBC パッケージが含まれます。これらは 2つの非常に異なるものであり、どちらもデータベースへの接続に使用できます。

2つの単純な違いは、ORM を使用すると、開発者は Python クラスまたはデータベーステーブルとマネージャーを表すモデル(さらに別の Python クラス)を使用してデータベースと対話し、モデルに対してクエリを実行できることです。一方、ODBC を使用すると、開発者は生またはネイティブの SQL クエリを記述して、データベースと直接対話できます。

Python は有名で広く使用されているプログラミング言語であるため、ORMODBC も適切にサポートしています。また、Python と pyodbc を使用した Microsoft SQL Server への接続について説明しているので、pyodbcODBC であるため、主に ODBC について学習します。

pyodbc を使用した Microsoft SQL Server への接続

Microsoft SQL Server に接続するには、最初にサーバーに関するいくつかの詳細(ドライバー名、サーバー名、データベース名)が必要です。上記の情報を使用して、特別な文字列を作成する必要があります。この文字列は、pyodbc ライブラリの connect() 関数に渡されます。

文字列の形式は次のとおりです-

Driver = { < driver_name > }
Server = <server_name >
Database = <database_name >
Trusted_Connection = yes

connect() メソッドを使用すると、プログラムとサーバーの間に接続が確立され、その接続を使用して、データベースを介して SQL クエリを直接実行できます。

同じことについては、次のコードを参照してください。

import pyodbc

connection = pyodbc.connect(
    "Driver={<driver_name>};Server=<server_name>;Database=<database_name>;Trusted_Connection=yes;"
)  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

DSN または Data Source Name、ユーザーID、およびパスワードを使用してサーバーに接続することもできます。また、その文字列は次のとおりです。

DSN = <dsn >
UID = <user >
PWD = <password >

このような場合は、以下のコードを参照してください。

import pyodbc

connection = pyodbc.connect("DSN=<dsn>;UID=<user>;PWD=<password>")  # Connection string
cursor = connection.cursor()
cursor.execute("SELECT * FROM <table_name>")  # Executing a query

for row in cursor:  # Looping over returned rows and printing them
    print(f"row = {row}")

Microsoft SQL Server のドライバや接続方法、ライブラリを使った接続に必要な情報などについては、こちらを参照してください。また、ライブラリ自体の詳細については、公式ドキュメントこちらをご参照ください。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.