Python용 Amazon QLDB 드라이버 — 퀵 스타트 튜토리얼 - Amazon Quantum 원장 데이터베이스(Amazon QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Python용 Amazon QLDB 드라이버 — 퀵 스타트 튜토리얼

중요

지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을 참조하십시오.

이 자습서에서는 최신 버전의 Amazon Python용 QLDB 드라이버를 사용하여 간단한 애플리케이션을 설정하는 방법을 알아봅니다. 이 안내서에는 드라이버 설치 단계와 기본 create, read, update, delete (CRUD) 작업의 단축 코드 예제가 포함되어 있습니다. 전체 샘플 애플리케이션에서 이러한 작업을 보여 주는 자세한 예를 보려면 Python 자습서 섹션을 참조하세요.

사전 조건

시작하기 전에 다음을 수행해야 합니다.

  1. Python 드라이버를 위한 사전 조건을 아직 완료하지 않은 경우, 완료하세요. 여기에는 가입 AWS, 개발을 위한 프로그래밍 액세스 권한 부여, Python 버전 3.6 이상 설치가 포함됩니다.

  2. quick-start라는 명칭의 원장을 생성합니다.

    원장 생성 방법을 알아보려면 콘솔 시작하기Amazon QLDB 원장의 기본 작업 또는 1단계: 새 원장 생성 섹션을 참조하세요.

1단계: 프로젝트 설정

먼저 Python 프로젝트를 설정합니다.

참고

이러한 설정 단계를 자동화하는 기능이 IDE 있는 를 사용하는 경우 다음으로 건너뛰어도 됩니다. 2단계: 드라이버 초기화

  1. 애플리케이션을 위한 폴더를 생성합니다.

    $ mkdir myproject $ cd myproject
  2. PyPI에서 Python용 QLDB 드라이버를 설치하려면 다음 pip 명령을 입력합니다.

    $ pip install pyqldb

    드라이버를 설치하면 AWS SDK for Python (Boto3)Amazon Ion 패키지를 포함한 해당 종속 항목도 설치됩니다.

  3. app.py라는 명칭의 새로운 파일을 만듭니다.

    그런 다음 다음 단계에 있는 코드 예제를 점진적으로 추가하여 몇 가지 기본 CRUD 작업을 시도합니다. 또는 step-by-step 자습서를 건너뛰고 대신 전체 응용 프로그램을 실행할 수도 있습니다.

2단계: 드라이버 초기화

quick-start라는 명칭의 원장에 연결되는 드라이버의 인스턴스를 초기화합니다. 다음 코드를 app.py 파일에 추가합니다.

from pyqldb.config.retry_config import RetryConfig from pyqldb.driver.qldb_driver import QldbDriver # Configure retry limit to 3 retry_config = RetryConfig(retry_limit=3) # Initialize the driver print("Initializing the driver") qldb_driver = QldbDriver("quick-start", retry_config=retry_config)

3단계: 테이블 및 인덱스 생성

다음 코드 예에서는 CREATE TABLECREATE INDEX 문을 실행하는 방법을 보여줍니다.

People라는 명칭의 표와 해당 표의 lastName 필드 인덱스를 만드는 다음 코드를 추가합니다. 인덱스는 쿼리 성능을 최적화하고 낙관적 동시성 제어 () OCC 충돌 예외를 제한하는 데 도움이 됩니다.

def create_table(transaction_executor): print("Creating a table") transaction_executor.execute_statement("Create TABLE People") def create_index(transaction_executor): print("Creating an index") transaction_executor.execute_statement("CREATE INDEX ON People(lastName)") # Create a table qldb_driver.execute_lambda(lambda executor: create_table(executor)) # Create an index on the table qldb_driver.execute_lambda(lambda executor: create_index(executor))

4단계: 문서 삽입

다음 코드 예에서는 INSERT 문을 실행하는 방법을 보여줍니다. QLDBPartiQL 쿼리 언어 SQL (호환 가능) 및 Amazon Ion 데이터 형식 (상위 세트) 을 지원합니다. JSON

People 테이블에 문서를 삽입하는 다음 코드를 추가합니다.

def insert_documents(transaction_executor, arg_1): print("Inserting a document") transaction_executor.execute_statement("INSERT INTO People ?", arg_1) # Insert a document doc_1 = { 'firstName': "John", 'lastName': "Doe", 'age': 32, } qldb_driver.execute_lambda(lambda x: insert_documents(x, doc_1))

이 예에서는 물음표(?)를 변수 자리 표시자로 사용하여 문서 정보를 해당 문에 전달합니다. 이 execute_statement 메서드는 Amazon Ion 타입과 Python 네이티브 타입 모두의 값을 지원합니다.

작은 정보

단일 INSERT 문을 사용하여 여러 문서를 삽입하려면 다음과 같이 목록 타입의 파라미터를 해당 문에 전달할 수 있습니다.

# people is a list transaction_executor.execute_statement("INSERT INTO Person ?", people)

목록을 전달할 때 변수 자리 표시자(?)를 이중 꺾쇠 괄호( <<...>> )로 묶지 마세요. 수동 PartiQL 문에서 이중 꺾쇠 괄호는 으로 알려진 정렬되지 않은 모음을 의미합니다.

5단계: 문서 쿼리

다음 코드 예에서는 SELECT 문을 실행하는 방법을 보여줍니다.

People 테이블에서 문서를 쿼리하는 다음 코드를 추가합니다.

def read_documents(transaction_executor): print("Querying the table") cursor = transaction_executor.execute_statement("SELECT * FROM People WHERE lastName = ?", 'Doe') for doc in cursor: print(doc["firstName"]) print(doc["lastName"]) print(doc["age"]) # Query the table qldb_driver.execute_lambda(lambda executor: read_documents(executor))

6단계: 문서 업데이트

다음 코드 예에서는 UPDATE 문을 실행하는 방법을 보여줍니다.

  1. age42로 업데이트하여 People 표의 문서를 업데이트하는 다음 코드를 추가합니다.

    def update_documents(transaction_executor, age, lastName): print("Updating the document") transaction_executor.execute_statement("UPDATE People SET age = ? WHERE lastName = ?", age, lastName) # Update the document age = 42 lastName = 'Doe' qldb_driver.execute_lambda(lambda x: update_documents(x, age, lastName))
  2. 표를 다시 쿼리하여 업데이트된 값을 확인합니다.

    # Query the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))
  3. 애플리케이션을 실행하려면 프로젝트 디렉터리에서 다음 명령을 입력합니다.

    $ python app.py

전체 애플리케이션 실행

다음 코드 예는 app.py 애플리케이션의 전체 버전입니다. 이전 단계를 개별적으로 수행하는 대신 이 코드 예를 처음부터 끝까지 복사하여 실행할 수도 있습니다. 이 애플리케이션은 이름이 지정된 원장에 대한 몇 가지 기본 CRUD 작업을 보여줍니다. quick-start

참고

이 코드를 실행하기 전에 quick-start 원장에 People이라는 명칭의 활성 테이블이 아직 없는지 확인하세요.

from pyqldb.config.retry_config import RetryConfig from pyqldb.driver.qldb_driver import QldbDriver def create_table(transaction_executor): print("Creating a table") transaction_executor.execute_statement("CREATE TABLE People") def create_index(transaction_executor): print("Creating an index") transaction_executor.execute_statement("CREATE INDEX ON People(lastName)") def insert_documents(transaction_executor, arg_1): print("Inserting a document") transaction_executor.execute_statement("INSERT INTO People ?", arg_1) def read_documents(transaction_executor): print("Querying the table") cursor = transaction_executor.execute_statement("SELECT * FROM People WHERE lastName = ?", 'Doe') for doc in cursor: print(doc["firstName"]) print(doc["lastName"]) print(doc["age"]) def update_documents(transaction_executor, age, lastName): print("Updating the document") transaction_executor.execute_statement("UPDATE People SET age = ? WHERE lastName = ?", age, lastName) # Configure retry limit to 3 retry_config = RetryConfig(retry_limit=3) # Initialize the driver print("Initializing the driver") qldb_driver = QldbDriver("quick-start", retry_config=retry_config) # Create a table qldb_driver.execute_lambda(lambda executor: create_table(executor)) # Create an index on the table qldb_driver.execute_lambda(lambda executor: create_index(executor)) # Insert a document doc_1 = { 'firstName': "John", 'lastName': "Doe", 'age': 32, } qldb_driver.execute_lambda(lambda x: insert_documents(x, doc_1)) # Query the table qldb_driver.execute_lambda(lambda executor: read_documents(executor)) # Update the document age = 42 lastName = 'Doe' qldb_driver.execute_lambda(lambda x: update_documents(x, age, lastName)) # Query the table for the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))

전체 애플리케이션을 실행하려면 프로젝트 디렉터리에서 다음 명령을 입력합니다.

$ python app.py