python - 如何处理我的应用程序中的 AWS-RDS 连接?

标签 python mysql amazon-rds

我正在寻找有关如何处理与 AWS-RDS 的连接的一些信息。每次执行查询时是否应该打开和关闭连接?我应该使用 lambda 函数吗?为什么?

我目前已对其进行设置,以便连接保持打开状态并从那里处理执行。我没有连接关闭或超时。

conn = pymysql.connect(db=dbname, host=host, port=port, user=user,
                       password=password)
cur = conn.cursor()

然后我在整个代码中执行查询,就像这样。

cur.execute("SELECT product, amount, total " +
              "FROM " + table +
            " WHERE po_date BETWEEN %s AND %s",
            (cur_month, next_month))

最佳答案

这取决于您的应用程序偏好。

全局连接 - 如果您在全局级别创建连接,则可以节省每次需要访问数据库时打开连接的成本,但您会在数据库上使用更多内存,因为它维护打开的连接。如果应用程序在退出时没有关闭连接,则数据库必须手动使该空闲连接超时并终止它。您需要向数据库添加重试逻辑以确保连接仍然有效。

每次连接 - 增加了创建和关闭连接的开销。在客户端和数据库端使用额外的 cpu 来打开和关闭连接,但会保持较低的连接计数。

至于使用 lambda,这完全取决于应用程序设计。但是,我会说是的,尽可能使用它!

如果您想使用 lambda 连接到数据库,则需要构建部署包或 lambda 层以包含 SQL 客户端。以下是一些链接,其中包含使用 pymysql 为 python 创建这些内容的分步说明。如果需要,您可以使用这些相同的指令将 pymysql 库替换为另一个 SQL 客户端。

https://geektopia.tech/post.php?blogpost=Create_Lambda_Package_Python

https://geektopia.tech/post.php?blogpost=Create_Lambda_Layer_Python

关于python - 如何处理我的应用程序中的 AWS-RDS 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715811/

相关文章:

python - pyodbc - 无法连接到 DSN

python - 从 Pandas 中的 read_csv 获取对象大小

postgresql - EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配

mysql - 为什么 Amazon RDS 内存监控阈值显示为红色?

python - django seo2 中的 django_content_type 错误

mysql - SQL 搜索配置

MySQL:来自另一张表的一行中的多个ID

php - PDO fatal error - 在非对象上调用成员函数 prepare()

amazon-web-services - AWS RDS : how to get latest snapshot with boto3 and jmespath?

python - 可以从新进程中的线程访问全局变量吗?