빠른 시작: Python을 사용하여 Azure Database for PostgreSQL - 단일 서버의 데이터 연결 및 쿼리

적용 대상: Azure Database for PostgreSQL - 단일 서버

Important

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 웹앱을 배포합니다.

필수 조건

이 빠른 시작에는 다음이 필요합니다.

  • 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.

  • Azure Portal을 사용하여 Azure Database for PostgreSQL 단일 서버 만들기
    또는 Azure CLI를 만듭니다(없는 경우).

  • 퍼블릭 또는 프라이빗 액세스를 사용하는지 여부에 따라 아래 작업 중 하나를 완료하여 연결을 활성화합니다.

    작업 연결 방법 방법 가이드
    방화벽 규칙 구성 공공 사업 포털
    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 서버 이름

Important

다음 값을 바꿉니다.

  • <server-name><admin-username>을 Azure Portal에서 복사한 값으로 바꿉니다.
  • <admin-password>를 서버 암호로 바꿉니다.
  • <database-name>postgres라는 기본 데이터베이스는 서버를 만들 때 자동으로 생성되었습니다. SQL 명령을 사용하여 해당 데이터베이스의 이름을 바꾸거나 새 데이터베이스를 생성할 수 있습니다.

1단계: 데이터 연결 및 삽입

다음 코드 예제에서는

  • psycopg2.connect 함수를 사용하여 Azure Database for PostgreSQL 데이터베이스에 연결하고 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 데이터베이스에 연결하고

  • SQL SELECT에서 cursor.execute를 사용하여 데이터를 읽습니다.
  • 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단계: 데이터 업데이트

다음 코드 예제에서는 SQL UPDATE 문에서 cursor.execute를 사용하여 데이터를 업데이트합니다.


# 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단계: 데이터 삭제

다음 코드 예제에서는 SQL DELETE에서 cursor.execute를 실행하여 이전에 삽입된 인벤토리 항목을 삭제합니다.


# 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

다음 단계