我使用sqlalchemy进行连接池,我想让其他模块可以使用引擎对象。我为其他模块需要的实用程序创建了一个模块,它看起来像这样:
from sqlalchemy import [...]
_engine = create_engine(url)
_meta = MetaData()
_meta.bind = _engine
def get_meta():
return _meta
def get_engine():
return _engine
我之前没有使用前导下划线就尝试过这样做,但它没有用。我的印象是前导下划线只是python中私有变量的传统样式,但显然它会影响代码的解释方式?无论如何,我只是想让一个特定的实时引擎对象(它控制对数据库连接池的访问)可用于其他模块,并且想知道这样做的最佳实践,谢谢。
答案 0 :(得分:4)
来自PEP008:
_single_leading_underscore
:弱“内部使用”指标。例如。from M import *
不会导入名称以下划线开头的对象。
所以是的,解释器处理带有前导下划线的标识符的方式与不带标识符的标识符不同。