我已经将我的几个 sqlalchemy 模型提取到一个单独的可安装包 (../lib/site-packages) 中,以便在多个应用程序中使用。所以我只需要:
from models_package import MyModel
从需要访问这些模型的任何应用程序。
到目前为止一切都很好,除了我找不到令人满意的方法来获取某些模型使用的几个依赖于应用程序的配置变量,这些变量可能因应用程序而异。所以一些模型需要知道一些变量,以前我使用过它们所在的应用程序。
两者都不
current_app.config['XYZ']
或者
config = LocalProxy(lambda: current_app.config['XYZ'])
已经工作(outside of application context
错误)所以我现在被困住了。也许这是代表我的糟糕的编程和/或设计,那么如何解决这个问题?一定有什么办法,但我还没有理会自己。
解决方案:
避免设置在模块加载时会发生的项目(如包含 api 键的常量),上述两种方法都应该有效,而且它们确实有效。任何不在应用程序中使用模型的上下文中使用的东西当然会出错,返回您需要的值的方法应该是好的。