我正在寻找有关如何处理与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))
答案 0 :(得分:0)
这取决于您的应用程序首选项。
全局连接-如果在全局级别创建连接,则可以节省每次需要访问数据库时打开连接的开销,但是由于数据库维护着打开的连接,因此您正在使用更多的内存。如果应用程序在退出时未关闭连接,则数据库必须手动使此空闲连接超时并终止它。您将需要向数据库添加重试逻辑,以确保连接仍然有效。
每次连接-增加了创建和关闭连接的开销。在客户端和数据库端使用额外的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