我正在尝试在 python 中为 Google App Engine 的所有数据库操作设置命名空间,但我无法完成。
目前我的代码看起来像这样:
""" Set Google namespace """
if user:
namespace = thisUser.namespace
namespace_manager.set_namespace(namespace)
""" End Google namespace """
#Then i have all sorts of classes:
class MainPage(BaseHandler):
def get(self):
#code with DB operations like get and put...
class MainPage2(BaseHandler):
def get(self):
#code with DB operations like get and put...
class MainPage3(BaseHandler):
def get(self):
#code with DB operations like get and put...
app = webapp2.WSGIApplication([ ... ], debug=True, config=webapp2_config)
这样做的问题是,在类中,所有 DB 操作仍然在默认命名空间上完成(就好像没有设置命名空间一样)。尽管我在代码的最顶部设置了命名空间。
当我打印变量“命名空间”(我也在代码顶部设置)时,我确实可以看到我希望使用的命名空间。
但看起来 Google App Engine 在某处将命名空间重置为空,然后再运行类中的代码。
所以现在我想知道是否有一种在某处设置命名空间的好方法。
目前我在所有“def”中都这样设置:
class MainPage(BaseHandler):
def get(self):
namespace_manager.set_namespace(namespace)
#code with DB operations like get and put...
class MainPage(BaseHandler):
def get(self):
namespace_manager.set_namespace(namespace)
#code with DB operations like get and put...
etc...
这不是一个非常优雅的解决方案。