欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用 python查詢Amazon DynamoDB

 更新時間:2023年06月20日 11:22:28   作者:跡憶客  
本文介紹了如何使用Python Boto3在Amazon DynamoDB上查詢DynamoDB 表、創(chuàng)建、列出和執(zhí)行其他 CRUD 活動以及執(zhí)行其他維護任務,本文給大家介紹的非常詳細,需要的朋友參考下

本文將討論如何使用 python 查詢 Amazon DynamoDB。 我們還將討論 Boto3 是什么以及它為什么需要查詢 DynamoDB。

DynamoDB 簡介

DynamoDB 是一種 NoSQL 數(shù)據(jù)庫服務,提供內置安全機制、連續(xù)備份、內存緩存和有用的數(shù)據(jù)導入/導出工具。

DynamoDB 在一個 AWS 區(qū)域的不同可用區(qū) (AZ) 之間自動復制數(shù)據(jù),增強了針對中斷和數(shù)據(jù)丟失的安全性。 DynamoDB 提供了許多安全功能,包括細粒度訪問控制、靜態(tài)加密和用戶活動記錄。

Boto3簡介

Boto3 是為 Amazon Web Services (AWS) 開發(fā)的內置 python 庫。 該庫可用于交互、創(chuàng)建、配置、管理和使用 Amazon 的不同服務,包括 DynamoDB。

安裝和導入 Boto3

要在我們的 Python 工作臺中安裝 Boto3 庫,請使用以下命令。

pip install boto3

輸出:

代碼:

Import boto3

這會將 boto3 庫導入到我們的筆記本中。

將 Boto3 連接到 DynamoDB

我們將使用以下代碼通過 Boto3 連接到我們的 DynamoDB。

代碼:

import boto3
client = boto3.client('dynamodb',
  aws_access_key_id='yyyy',
  aws_secret_access_key='xxxx',
  region_name='us-east-1')

請記住,數(shù)據(jù)庫必須已經(jīng)在 AWS DynamoDB 上創(chuàng)建才能通過 Python Boto3 庫連接到它。

使用 Boto3 在 DynamoDB 中創(chuàng)建表

DynamoDB 上的表可以通過多種方式創(chuàng)建。 這包括使用 Amazon CLI、AWS 控制臺或使用 Boto3。

在這里,我們將按照前面提到的步驟將 Boto3 與我們已經(jīng)連接到的數(shù)據(jù)庫一起使用。 了解 DynamoDB 客戶端和表資源如何變化可以讓您根據(jù)需要使用其中任何一個,因為該表資源可以顯著簡化某些操作。

開發(fā)人員可以使用 boto3.resource('dynamodb') 資源創(chuàng)建、更新和刪除 DynamoDB 表和所有內容。 此資源支持使用條件表達式和表級安全性的項目級安全性。

要對 DynamoDB 數(shù)據(jù)進行無服務器訪問,請將 boto3.resource('dynamodb') 資源與 AWS Lambda 函數(shù)結合使用。

import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-west-2')
table = dynamodb.create_table(
    TableName='Movies',
    KeySchema=[
        {
            'AttributeName': 'year',
            'KeyType': 'HASH'  #Partition key
        },
        {
            'AttributeName': 'title',
            'KeyType': 'RANGE'  #Sort key
        }
    ],
    AttributeDefinitions=[
        {
            'AttributeName': 'id',
            'AttributeType': 'N'
        },
        {
            'AttributeName': 'createdAt',
            'AttributeType': 'S'
        },
    ],
    ProvisionedThroughput={
        'ReadCapacityUnits': 10,
        'WriteCapacityUnits': 10
    }
)
print("Table status:", table.table_status)

通過 Boto3 創(chuàng)建表需要一些時間才能激活和顯示。 建議在重試之前稍等片刻,或者我們可以使用服務員功能讓我們知道表何時處于活動狀態(tài)。

import botocore.session
session = botocore.session.get_session()
dynamodb = session.create_client('dynamodb', region_name='us-east-1') # low-level client
waiter = dynamodb.get_waiter('table_exists')
waiter.wait(TableName="my-table-name")

通過 Boto3 刪除 DynamoDB 中的表

在 DynamoDB 中刪除表非常簡單。 如果我們改變主意并想從數(shù)據(jù)庫中刪除一個表,我們需要輸入以下代碼片段。

import boto3
dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
dynamodb.delete_table(
    TableName="Movies"
)

請記住,我們要刪除的表已經(jīng)存在于數(shù)據(jù)庫中且名稱相同,否則會給我們一條錯誤消息(未找到表)。

通過 Boto3 列出 DynamoDB 中的表

如果我們有興趣查找我們所在地區(qū)所有可用餐桌的列表,我們需要使用 list() 函數(shù)列出該地區(qū)所有可用餐桌。

import boto3
dynamodb = boto3.resource('dynamodb', region_name=region)
tables = list(dynamodb.tables.all())
print(tables)

必須確保表的總數(shù)小于 100,否則我們將不得不對列表進行分頁。

通過 Boto3 在 DynamoDB 中分頁

單個列表調用返回最多 1MB 項目的結果。 為了進一步上市,我們需要發(fā)出第二個電話。 如果響應對象中存在 LastEvaluatedKey,則應再次調用 ExclusiveStartKey 以從此表中獲取更多項。

dynamodb = boto3.resource('dynamodb', region_name=region)
table = dynamodb.Table('my-table')
response = table.query()
data = response['Items']
# LastEvaluatedKey indicates that there are more results
while 'LastEvaluatedKey' in response:
    response = table.query(ExclusiveStartKey=response['LastEvaluatedKey'])
    data.update(response['Items'])

通過 Boto3 在 DynamoDB 中排序

在數(shù)據(jù)庫端,DynamoDB 只提供了一種對結果進行排序的方法。 如果您的表格缺少結果,則您對項目進行排序的能力僅限于在收到結果后在應用程序代碼中這樣做。

但是,您可以使用以下語法以降序或升序使用排序鍵對 DynamoDB 結果進行排序。

import boto3
dynamodb = boto3.resource('dynamodb', region_name=region)
table = dynamodb.Table('my-table')
response = table.query(
    ScanIndexForward=False # true = ascending, false = descending
)
data = response['Items']

通過 Boto3 在 DynamoDB 中獲取項目

如果我們有興趣從 DynamoDB 數(shù)據(jù)庫中獲取特定項目,則使用 GetItem() 函數(shù)。

import boto3
dynamodb = boto3.resource('dynamodb', region_name=region)
table = dynamodb.Table('my-table')
response = table.get_item(Key={
  primaryKeyName: "ID-1",
  sortKeyName: "SORT_2"
})

通過 Boto3 掃描 DynamoDB 中的項目

表格中的所有信息都可以通過掃描訪問。 讀取表中的每一項后,數(shù)據(jù)將由 scan() 方法返回。

當您添加其他選項(如 FilterExpression)時,表掃描操作可以返回更少的所需結果。

import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Employees')
response = table.scan()
response['Items']
print(response)

或者

import boto3
from boto3.dynamodb.conditions import Key, Attr
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('Employees')
response = table.scan(FilterExpression=Attr('Department').eq('IT'))
print("The query returned the following items:")
for item in response['Items']:
    print(item)

DynamoDB 中的全局二級索引

您可以使用全局二級索引查詢不包含在主表主鍵中的屬性。 這樣做可以避免全表掃描過程帶來的延遲和低效率。

全局二級索引也將包括來自主表的屬性,但將使用不同的主鍵進行結構化,從而加快查詢速度。

使用 Boto3 備份 DynamoDB 表

要使用 Boto3 為 DynamoDB 表創(chuàng)建按需備份,請使用 create_backup() 方法并將目標備份表名稱與表名稱一起傳遞。

import boto3
client = boto3.client('dynamodb')
response = client.create_backup(
    TableName='Employees',
    BackupName='Employees-Backup-01'
)
print(response)

總結

本文介紹了如何使用 Python Boto3 在 Amazon DynamoDB 上查詢 DynamoDB 表、創(chuàng)建、列出和執(zhí)行其他 CRUD 活動以及執(zhí)行其他維護任務。

到此這篇關于Python 查詢 DynamoDB的文章就介紹到這了,更多相關Python 查詢 DynamoDB內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python爬蟲爬取網(wǎng)站圖片

    Python爬蟲爬取網(wǎng)站圖片

    這篇文章主要介紹了Python爬蟲爬取網(wǎng)站圖片,此次python3主要用requests,解析圖片網(wǎng)址主要用beautiful soup,可以基本完成爬取圖片功能,需要的朋友可以參考一下
    2022-01-01
  • Python Property屬性的2種用法

    Python Property屬性的2種用法

    這篇文章主要介紹了Python Property屬性的2種用法,本文分別給出了兩種用法的代碼實例,需要的朋友可以參考下
    2015-06-06
  • 關于Python中的main方法教程

    關于Python中的main方法教程

    估計很多人跟我一樣初學python看代碼的時候先找一下main()方法,從main往下看。但事實上python中是沒有你理解中的“main()”方法的,一起來看看吧
    2023-03-03
  • numpy.insert()的具體使用方法

    numpy.insert()的具體使用方法

    本文主要介紹了numpy.insert()的具體使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Java Spring項目國際化(i18n)詳細方法與實例

    Java Spring項目國際化(i18n)詳細方法與實例

    這篇文章主要介紹了Java Spring項目國際化詳細方法與實例,需要的朋友可以參考下
    2020-03-03
  • 淺談PySpark SQL 相關知識介紹

    淺談PySpark SQL 相關知識介紹

    這篇文章主要介紹了淺談PySpark SQL 相關知識介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • Python Sphinx使用實例及問題解決

    Python Sphinx使用實例及問題解決

    這篇文章主要介紹了Python Sphinx使用實例及問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • django免除csrf校驗的方法

    django免除csrf校驗的方法

    這篇文章主要介紹了django免除csrf校驗的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Python-flask調用接口返回中文數(shù)據(jù)問題

    Python-flask調用接口返回中文數(shù)據(jù)問題

    這篇文章主要介紹了Python-flask調用接口返回中文數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Python super()方法原理詳解

    Python super()方法原理詳解

    這篇文章主要介紹了Python super()方法原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論