【发布时间】:2014-08-16 20:26:32
【问题描述】:
我开始我的第一次主要涉足 Python 的领域是 C# 和 Java。到目前为止还不错,但我似乎无法理解的一个概念是如何初始化将在许多模块和包中使用的长期变量?
在 C# 中,我可以有一个 Environment 或 Config 类,在应用启动时实例化并通过依赖注入或其他可以保存值的机制传递。
作为一个具体的例子,我正在使用 SQLAlchemy 进行数据库插入。我创建了一个模块 db.py,其中包含如下所示的 db 代码:
engine = create_engine('dburl', echo=True)
conn = engine.connect()
metadata = MetaData()
table_mytable = Table('mypackage', metadata,
Column('id', String, primary_key=True),
Column('mystuff', String),
ins = table_mytable.insert()
def insert():
result = conn.execute(ins)
然后其他代码导入我的db 模块并利用insert 函数进行插入。
我遇到的问题是,每次我导入我的 db 模块以供使用时,engine、conn、metadata 和 table_my_table 变量都会重新创建,因此基本上对于我重新连接的每个导入到db 并重新定义所有元数据?
这是正确和预期的事情吗?还是有更好的方法来解决这个问题?
【问题讨论】:
标签: python