本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 Python 的亞馬遜 QLDB 驅動程序 — 快速入門教程
在此教學中,您將學習如何使用適用於 Python 的最新版 Amazon QLDB 驅動程式,設定簡單的應用程式。本指南包含安裝驅動程式的步驟和基本的建立、讀取、更新和刪除 (CRUD) 操作的簡短程式碼範例。如需在完整範例應用程式中示範這些作業的更深入範例,請參閱Python 教學課程.
先決條件
在開始使用之前,請確認執行下列作業:
-
完成先決條件 Python 驅動程式,如果您尚未這麼做。這包括註冊AWS、授予程式設計存取以供開發,以及安裝 Python 3.6 版或更新版本。
-
建立名為的分類帳
quick-start
。若要瞭解如何建立分類帳,請參閱Amazon QLDB 分類帳的基本操作或步驟 1:建立新的分類帳在「開始使用主控台」中的。
步驟 1:設定您的 專案
首先,設定您的 Python 專案。
注意
如果您使用的 IDE 具有自動執行這些設定步驟的功能,您可以跳到步驟 2:初始化驅動程式。
-
建立您的應用程式資料夾。
$
mkdir myproject
$
cd myproject
-
若要從 PyPI 安裝適用於 Python 的 QLDB 驅動程式,請輸入以下
pip
指令。$
pip install pyqldb
安裝驅動程式也會安裝其相依性,包括AWS SDK for Python (Boto3)
和 Amazon Ion 套件。 -
建立名為
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 TABLE
和CREATE
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
陳述式。QLDB 支援 PartiQL 查詢語言 (與 SQL 相容) 和亞馬遜離子資料格式 (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
方法支持亞馬遜離子類型和 Python 本機類型中的值。
提示
步驟 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
陳述式。
-
添加以下代碼,通過更新
age
到更新People
表中的文檔42
。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))
-
再次查詢資料表以查看更新的值。
# Query the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))
-
若要執行應用程式,請從您的專案目錄輸入下列命令。
$
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