擅长:python、mysql、java
<p>如果您的代码没有使用sqlalchemy,并且由于各种原因不想对代码进行繁重的重构,那么您可以将数据库访问代码包装到一个类中,并将其附加到flask应用程序实例。你知道吗</p>
<pre><code>app.db = DBAccessClass()
</code></pre>
<p>然后通过代码调用连接到flask应用程序的实例。
对于可以缓存的相同数据,对DB进行多次调用并不能解决问题。你知道吗</p>
<p>然后可以使用注释类来实现DBAccessClass的缓存策略,下面是一个非常简单的示例:</p>
<pre><code>from functools import wraps, update_wrapper
class cache(object):
def __init__(self):
self.named_caches = {}
def __call__(self, f):
@wraps(f)
def decorated(*args, **kwargs):
key = f.__name__
if key not in self.named_caches:
self.named_caches[key] = f(*args, **kwargs)
return self.named_caches[key]
return update_wrapper(decorated, f)
cached = cache()
class MyDBAccessClass(object):
@cached
def get_some_data(self):
data = query_db()
return data
</code></pre>
<p>这可能是一个短期的解决方案,将强烈鼓励考虑sQLAlchemy。你知道吗</p>