一尘不染

在Google Cloud SQL(GAE)Python应用程序中管理数据库连接的好方法是什么?

mysql

我只是在学习Google App Engine,并试图找到一种管理与Google Cloud SQL实例的数据库连接的好方法(如果您还没有使用GC-
SQL,那么基本上是在云中使用MySQL,限制)。

我正在将python(2.7)GAE环境与webapp2框架一起使用来处理请求。我知道常见问题解答说,建议每个请求都与数据库建立新的连接,但是我不知道关闭连接的推荐方法是什么。每次我在开发过程中尝试删除表时,GC-
SQL都会挂起,并且“ show
processlist”显示有很多进程(可能是因为我没有关闭数据库),并且其中一个正在等待锁(可能是尝试删除表格的过程)。这很烦人,迫使我重新启动GC-
SQL实例(我想像是重新启动mysql-server服务)。我认为偶尔也会出现数据库故障,这与我并未真正关闭数据库连接有关。

因此,例如,我是否应该在我的webapp2.Requesthandler子类实例上有一个析构函数来与数据库断开连接?GAE对象似乎有时会被缓存,因此这也是要考虑的事情。我想我可以为每个查询连接/查询/断开连接,但这似乎不是最理想的。

我知道这是一个模糊的问题,但是我希望这个领域的人能以我的方式提出一些建议。

提前致谢!

更新: 我尝试以Shay的答案为出发点,围绕需要cursot的方法实现包装器。我收到GAE错误。这是一个新的特定问题:App
Engine对Google Cloud
SQL的连接限制是什么,如何最好地重用数据库连接?


阅读 302

收藏
2020-05-17

共1个答案

一尘不染

我不熟悉Google Cloud SQL,但是您不能使用WSGI中间件来打开和关闭连接吗?

2020-05-17