我在尝试flask-extension
使用pymodm创建时注意到了这一点。考虑一个用例pymodm.MongoModel
。
Models.py(用户定义的模块)
#line 1
from pymodm import MongoModel, fields,connect
#line 2
connect("mongodb://localhost:27017/project_matrix")
#line 3
class Model(MongoModel):
name = fields.CharField()
#line 4
Model({"name": "test"}).save()
关于connections.pyconnect
模块方法 的有趣之处在于,它使用一个模块级变量调用来存储所有连接。在将连接导入到当前名称空间后,我们正在使用连接方法添加连接。_CONNECTIONS
#line 2
_CONNECTIONS
然后,在 中,我们调用了models.py#line 4
模块的 TopLevelMongoModel 类的 save 方法,该方法间接调用了options.py。
options.py导入connections.py的方法。collections()
_get_db
总结:
Models.py
导入connections.py 的connect 方法以添加到模块级变量的连接。
options.py导入 _get_db of connections.py以某种方式设法获得了一个由.py_CONNECTIONS
更改的连接Models.py
。
这背后的机制/概念是什么?模块级变量是全局变量JavaScript
还是我遗漏了什么?