在models.py我有:
...
db = SQLAlchemy(app)
class User(db.Document):
...
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,serve.py并models.py致电:
from models import User
Run Code Online (Sandbox Code Playgroud)
是双重导入会实例化数据库两次并可能导致问题吗?
Jam*_*lls 11
是双重导入会实例化数据库两次并可能导致问题吗?
不,不会.一旦导入模块,无论通过该import语句进一步导入,它都可用.
该模块存储在sys.modules导入一次.
如果要重新加载必须使用的模块reload(module).
例: bar.py
xs = [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
导入两次:
>>> from bar import xs
>>> id(xs)
140211778767256
>>> import bar
>>> id(bar.xs)
140211778767256
Run Code Online (Sandbox Code Playgroud)
请注意,身份是相同的?
缓存:
>>> import sys
>>> sys.modules["bar"] is bar
True
Run Code Online (Sandbox Code Playgroud)