我正在寻找有关如何处理与 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/