如何使用 AWS rds-data 使用 boto3 和 AWS-aurora 对我的 mysql 查询进行分页?
How do I paginate my mysql query using AWS rds-data using boto3 and AWS-aurora?
我正在使用 Boto3 从 AWS Lambda 无服务器查询 AWS Aurora (MySQL)。我想查询一个有超过 10k 条记录的 table。我的查询可以获取超过 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之间传输的数据将大大减少,从而节省时间和成本。
在服务中存储数据所需的内存会更少,因此您不需要更强大的 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
中显示分页记录列表的用例
谢谢
我正在使用 Boto3 从 AWS Lambda 无服务器查询 AWS Aurora (MySQL)。我想查询一个有超过 10k 条记录的 table。我的查询可以获取超过 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之间传输的数据将大大减少,从而节省时间和成本。
在服务中存储数据所需的内存会更少,因此您不需要更强大的 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
中显示分页记录列表的用例谢谢