亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何使用 python查詢Amazon DynamoDB

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

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

DynamoDB 簡(jiǎn)介

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

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

Boto3簡(jiǎn)介

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

安裝和導(dǎo)入 Boto3

要在我們的 Python 工作臺(tái)中安裝 Boto3 庫,請(qǐng)使用以下命令。

pip install boto3

輸出:

代碼:

Import boto3

這會(huì)將 boto3 庫導(dǎo)入到我們的筆記本中。

將 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')

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

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

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

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

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

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

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)建表需要一些時(shí)間才能激活和顯示。 建議在重試之前稍等片刻,或者我們可以使用服務(wù)員功能讓我們知道表何時(shí)處于活動(dò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 中刪除表非常簡(jiǎn)單。 如果我們改變主意并想從數(shù)據(jù)庫中刪除一個(gè)表,我們需要輸入以下代碼片段。

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

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

通過 Boto3 列出 DynamoDB 中的表

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

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

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

通過 Boto3 在 DynamoDB 中分頁

單個(gè)列表調(diào)用返回最多 1MB 項(xiàng)目的結(jié)果。 為了進(jìn)一步上市,我們需要發(fā)出第二個(gè)電話。 如果響應(yīng)對(duì)象中存在 LastEvaluatedKey,則應(yīng)再次調(diào)用 ExclusiveStartKey 以從此表中獲取更多項(xiàng)。

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 只提供了一種對(duì)結(jié)果進(jìn)行排序的方法。 如果您的表格缺少結(jié)果,則您對(duì)項(xiàng)目進(jìn)行排序的能力僅限于在收到結(jié)果后在應(yīng)用程序代碼中這樣做。

但是,您可以使用以下語法以降序或升序使用排序鍵對(duì) DynamoDB 結(jié)果進(jìn)行排序。

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 中獲取項(xiàng)目

如果我們有興趣從 DynamoDB 數(shù)據(jù)庫中獲取特定項(xiàng)目,則使用 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 中的項(xiàng)目

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

當(dāng)您添加其他選項(xiàng)(如 FilterExpression)時(shí),表掃描操作可以返回更少的所需結(jié)果。

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 中的全局二級(jí)索引

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

全局二級(jí)索引也將包括來自主表的屬性,但將使用不同的主鍵進(jìn)行結(jié)構(gòu)化,從而加快查詢速度。

使用 Boto3 備份 DynamoDB 表

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

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

總結(jié)

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

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

相關(guān)文章

  • 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種用法,本文分別給出了兩種用法的代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • 關(guān)于Python中的main方法教程

    關(guān)于Python中的main方法教程

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

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

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

    Java Spring項(xiàng)目國(guó)際化(i18n)詳細(xì)方法與實(shí)例

    這篇文章主要介紹了Java Spring項(xiàng)目國(guó)際化詳細(xì)方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • 淺談PySpark SQL 相關(guān)知識(shí)介紹

    淺談PySpark SQL 相關(guān)知識(shí)介紹

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

    Python Sphinx使用實(shí)例及問題解決

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

    django免除csrf校驗(yàn)的方法

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

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

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

    Python super()方法原理詳解

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

最新評(píng)論