具有数据依赖性的无类Python模块初始化

时间:2016-03-11 21:12:22

标签: python

我目前的任务是通过将内容分成不同的文件来改进kludged Flask应用程序(App.py)。旧应用程序有一些全局状态来保存数据库连接对象和许多顶级函数来执行数据库操作,如下所示:

dbc = SomeDatabaseConnection( CONNECTION_STRING )

def get_users():
    result = dbc.execute("SELECT * FROM users")
    # do stuff
    return processed_result

到目前为止,我已将所有数据库逻辑移至另一个文件(Database.py),保留了无类设计,但存在一个问题:我不知道如何初始化dbc对象:

在旧的单文件应用程序中,我们有一个硬编码的CONNECTION_STRING全局,但是因为我们想要在其他项目中重用Database.py,我们不想对字符串进行硬编码那个文件 - 事实上我们现在从YAML文件加载它,所以我需要找到一种方法将字符串从YAML文件传递到App.py并传递到Database.py

如何?

1 个答案:

答案 0 :(得分:1)

一个选项是向database.py添加一个函数。该函数将连接字符串作为参数并设置全局dbc变量。使用database.py模块的程序在使用任何其他数据库函数之前需要调用新函数。类似的东西:

# database.py

dbc = None

def open_database(connection_string):
    global dbc
    dbc = SomeDatabaseConnection(connection_string)

# program.py

open_database( CONNECTION_STRING )