如何在包中的不同模块之间共享相同的数据库连接实例?

时间:2014-10-04 17:02:41

标签: python

我有许多需要拥有数据库连接实例的模块,我希望他们共享相同的实例,而不是创建自己的实例。我目前的做法是在所有模块中显式发送对象实例中的每个函数:

def func(arg1, arg2, database_connection):
    pass

当应该有更好的方法导入包含该实例的单独模块时,这变得相当丑陋并且在某种程度上是多余的,但是我不太确定如何保证它实际上是单个实例,而不是多个实例。

也就是说,我正在寻找一种方法来做这样的事情:

import db_module
def func(arg1, arg2):
    database_connection = db_module.get_db_instance()

2 个答案:

答案 0 :(得分:1)

您所描述的解决方案:

import db_module
def func(arg1, arg2):
    database_connection = db_module.get_db_instance()

完全可行,因为Python只导入一次模块。如果执行多个import语句,它们每个都引用模块的单个实例。

您可以在Python Tutorial和\ n中阅读有关模块和导入的更多信息 Python Language Reference

答案 1 :(得分:0)

这是什么意思?创建一个导入已定义函数的模块?

db_module.py my_connection = func(x,y)

来自db_module import my_connection