クイック スタート:Python を使用して Azure Database for PostgreSQL - Single Server に接続し、データにクエリを実行する
適用対象: Azure Database for PostgreSQL - 単一サーバー
重要
Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページを参照してください。
このクイックスタートでは、Azure Database for PostgreSQL 単一サーバー上のデータベースに接続し、SQL ステートメントを実行して macOS、Ubuntu Linux、または Windows で Python を使用したクエリを実行する方法について説明します。
ヒント
PostgreSQL を使用する Django アプリケーションを構築する場合は、PostgreSQL を使用した Django Web アプリのデプロイに関するチュートリアルを参照してください。
前提条件
このクイックスタートでは、以下が必要です。
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure portal または
Azure CLI を使用して、Azure Database for PostgreSQL の単一サーバーを作成します (まだない場合)。パブリック アクセスとプライベート アクセスのどちらを使用しているかに基づいて、次のいずれかのアクションを実行して、接続を有効にします。
アクション 接続方法 ハウツー ガイド ファイアウォール規則を構成する パブリック ポータル
CLIサービス エンドポイントを構成する パブリック ポータル
CLIプライベート リンクを構成する プライベート ポータル
CLIPython 2.7 または 3.6 以降。
最新の pip パッケージ インストーラー。
ターミナルまたはコマンド プロンプト ウィンドウで
pip install psycopg2-binary
を使用して psycopg2 をインストールします。 詳細については、psycopg2
のインストール方法を参照してください。
データベース接続情報を取得する
Azure Database for PostgreSQL データベースに接続するには、完全修飾サーバー名とログイン資格情報が必要です。 この情報は Azure portal から取得できます。
Azure portal で、ご利用の Azure Database for PostgreSQL サーバー名を検索して選択します。
サーバーの [概要] ページで、完全修飾サーバー名と管理者ユーザー名をコピーします。 完全修飾サーバー名 は常に <my-server-name>.postgres.database.azure.com の形式になり、管理者ユーザー名は常に <my-admin-username>@<my-server-name> の形式になります。
また、管理者パスワードも必要です。 忘れた場合は、このページでリセットできます。
重要
次の値を置き換えます。
<server-name>
および<admin-username>
を、Azure portal からコピーした値に指定します。<admin-password>
をサーバー パスワードに指定します。<database-name>
: サーバーの作成時に、postgres という名前の既定のデータベースが自動的に作成されています。 このデータベースの名前を変更することも、SQL コマンドを使用して新しいデータベースを作成することもできます。
手順 1: データの接続と挿入
次のコード例では、以下を使用して Azure Database for PostgreSQL データベースに接続します
- psycopg2.connect 関数。次に、SQL INSERT ステートメントを使用してデータを読み込みます。
- cursor. execute 関数は、データベースに対して SQL クエリを実行します。
import psycopg2
# Update connection string information
host = "<server-name>"
dbname = "<database-name>"
user = "<admin-username>"
password = "<admin-password>"
sslmode = "require"
# Construct connection string
conn_string = "host={0} user={1} dbname={2} password={3} sslmode={4}".format(host, user, dbname, password, sslmode)
conn = psycopg2.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
コードが正常に実行されると、次の出力が生成されます。
手順 2:データの読み取り
次のコード例では、Azure Database for PostgreSQL データベースに接続して、以下を使用します
- cursor.execute と SQL SELECT ステートメントを使用してデータを読み取ります。
- cursor.fetchall() は、クエリを受け取り、反復処理する結果セットを返します
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
手順 3:データの更新
次のコード例では、cursor.execute と SQL UPDATE ステートメントを使用してデータを更新します。
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
手順 5: データの削除
次のコード例では、cursor.execute と DELETE SQL ステートメントを実行して、先ほど挿入した inventory 項目を削除します。
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
リソースをクリーンアップする
このクイックスタートで使用したすべてのリソースをクリーンアップするには、次のコマンドを使用してリソース グループを削除します。
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes