我想创建一个从我的python flask应用程序到GCP上的数据存储实例的数据库连接。我有一个文件services / db.py:
from google.cloud import datastore
from google.auth import compute_engine
from config import env
import os
import logging
import warnings
namespace = env.str('ENV')
class Datastore_Client():
def context_local(self):
datastore_client = datastore.Client(namespace=namespace)
return datastore_client
def context_test(self):
project = env.str("GOOGLE_CLOUD_PROJECT")
credentials = compute_engine.Credentials()
datastore_client = datastore.Client(credentials=credentials, project=project, namespace='test')
return datastore_client
def context_live(self):
datastore_client = datastore.Client(namespace=namespace)
return datastore_client
def get_datastore_client(self):
contexts = {
'local': self.context_local,
'test': self.context_test,
'appengine': self.context_live
}
context_func = contexts.get(env.str("CONTEXT"), self.context_local)
return context_func()
builtin_list = list
def from_datastore(self, entity):
if not entity:
return None
if isinstance(entity, list):
entity = entity.pop()
return entity
在我的模型文件中,我将像这样引用数据存储区客户端:
from ..services.db import Datastore_Client
client = Datastore_Client().get_datastore_client()
但是在运行我的应用程序时在需要它的所有文件中提供此引用时,似乎为每个实例增加了一个数据库连接,而我想要一个应用程序范围的连接。
我查看了应用程序上下文,但以使用sqlite的示例为例,并在不确定是否可以将相同的方法用于数据存储之后谈论断开连接。