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 は有名で広く使用されているプログラミング言語であるため、ORM
と ODBC
も適切にサポートしています。また、Python と pyodbc
を使用した Microsoft SQL Server への接続について説明しているので、pyodbc
は ODBC
であるため、主に 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 のドライバや接続方法、ライブラリを使った接続に必要な情報などについては、こちらを参照してください。また、ライブラリ自体の詳細については、公式ドキュメントこちらをご参照ください。