クイック スタート: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
    プライベート リンクを構成する プライベート ポータル
    CLI
  • Python 2.7 または 3.6 以降。

  • 最新の pip パッケージ インストーラー。

  • ターミナルまたはコマンド プロンプト ウィンドウで pip install psycopg2-binary を使用して psycopg2 をインストールします。 詳細については、psycopg2 のインストール方法を参照してください。

データベース接続情報を取得する

Azure Database for PostgreSQL データベースに接続するには、完全修飾サーバー名とログイン資格情報が必要です。 この情報は Azure portal から取得できます。

  1. Azure portal で、ご利用の Azure Database for PostgreSQL サーバー名を検索して選択します。

  2. サーバーの [概要] ページで、完全修飾サーバー名管理者ユーザー名をコピーします。 完全修飾サーバー名 は常に <my-server-name>.postgres.database.azure.com の形式になり、管理者ユーザー名は常に <my-admin-username>@<my-server-name> の形式になります。

    また、管理者パスワードも必要です。 忘れた場合は、このページでリセットできます。

    Azure Database for PostgreSQL サーバーの名前

重要

次の値を置き換えます。

  • <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.executeDELETE 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

次のステップ