[英]How do I paginate my mysql query using AWS rds-data using boto3 and AWS-aurora?
我正在使用 Boto3 從 AWS Lambda 查詢 AWS Aurora (MySQL) 無服務器。 我想查詢一個記錄超過 10k 條的表。 我的查詢可以獲取超過 7k 的記錄。 現在如何在數據庫級別或 Lambda 級別對這些數據進行分頁,以便每頁獲得更少的數據並將該小數據集發送到用戶界面進行顯示? 我無法發送 7k 條記錄的整個數據集。
這是我的 Python 代碼
rdsDataClient.execute_statement(resourceArn=cluster_arn,
secretArn=secret_arn,
database='myTestDB',
sql=sqlQuery,
parameters = paramSet
)
我知道 SQL 查詢 LIMIT 和 OFFSET 但想知道是否還有其他更好的方法可以做到這一點。 請幫忙。
謝謝。
我認為最好的方法是讓數據庫處理分頁,原因如下:
該查詢編寫起來非常簡單,只需按照您的建議添加一個 LIMIT 和 OFFSET 。
如果分頁,在數據庫和服務/lambda 之間傳輸的數據會少得多,從而節省時間和成本。
在服務中存儲數據所需的 memory 會更少,因此您不需要更強大的 lambda 來進行計算。
由於上述原因,服務 / lambda 的響應性會更好。
是的,我使用了將限制和偏移量傳遞給 sqlQuery 的方法。 這是我所做的
def lambda_handler(event, context):
queryParameters = event["queryStringParameters"]
search = getQueryStringElement("search", queryParameters, '')
pageSize = int(getQueryStringElement("pageSize", queryParameters, 5))
page = int(getQueryStringElement("page", queryParameters, 1))
limit = pageSize
offset = (pageSize * page) - pageSize
sqlQuery = sqlQuery + ' LIMIT {} OFFSET {} ;'.format(limit, offset)
rdsDataClient.execute_statement(resourceArn=cluster_arn,
secretArn=secret_arn,
database='myTestDB',
sql=sqlQuery,
parameters = paramSet
)
這個解決方案非常適合我用來在 UI 中顯示分頁記錄列表的用例
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.