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