在Python变量中存储未打开的数据库连接

时间:2014-12-19 02:59:51

标签: python python-3.x global-variables web-deployment

我在如何搜索时遇到问题,所以如果答案已经存在,请指出我正确的方向,我很乐意将其删除。

我的Python代码中有这个

db = pg_driver.connect(user     = DB_NAME,
                       password = DB_WORD,
                       host     = DB_HOST,
                       port     = DB_PORT
)

一切都很完美。我很好奇,如果我可以把它放到一个全局文件中,然后,做这样的事情:

db = global.db
# OR something like this, where the () says to actually do the opening.
db = global.db()

然后,只有本地db将具有开放连接,但global.db将保持我通常用于打开数据库的方式。我的想法是,不是只有四行,而是只有一行,如果我改变了一些关于如何连接到数据库的东西,我可以一次更新所有内容,而不必更新多个内容。

但是,我不希望global.db保持永远开放的数据库连接,因为这可能会导致更新问题。此外,我无法在需要时使用打开和关闭数据库的良好做法。如果我要保持我的代码如图所示,并调用db.close(),那么global.db也将被关闭,并且对于脚本中的任何其他用途都无用。

理想情况下,这可以通过宏来完成,但Python并没有我所理解的那些。

感谢。

1 个答案:

答案 0 :(得分:1)

global.py中,创建一个partial对象。

import functools
db = functools.partial(pg_driver.connect,
                       user=DB_NAME,
                       password=DB_WORD,
                       host=DB_HOST,
                       port=DB_PORT)

然后,db是一个可调用的对象,可以按照您的意愿使用。

import global
db = global.db()