首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Django兑现数据库长连接

2012-08-28 
Django实现数据库长连接开始接触Django只有一个多月的时间,而且一开始完全是在修改别人的代码,一个一个问

Django实现数据库长连接

开始接触Django只有一个多月的时间,而且一开始完全是在修改别人的代码,一个一个问题的改,感觉没怎么自己没太大的进步。最近来了一个新的需求:“让Django实现数据库长连接”,网上找了很多资料也没找到说名Django数据库长连接的,Django的文档也里里外外的找了一遍,可就是没提到数据库长连接的。于是开始看Django内部数据库相关的代码,发现可以采用下述方式实现数据库长连接。

[python] view plaincopy
  1. #?Register?an?event?that?closes?the?database?connection??#?when?a?Django?request?is?finished.??
  2. def?close_connection(**kwargs):??????for?conn?in?connections.all():??
  3. ????????conn.close()??signals.request_finished.connect(close_connection)??

上述是Django的一段数据库相关代码,可以在\django\db\__init__.py中找到。

如果不希望Django在每次请求结束以后都关闭所有的连接,可以将上述最后一行代码注释。

经过测试,这样是可以达到保持连接的要求了。但是这种修改Django内部代码的方式过于霸道了,所以继续研究和最后一行代码相关的Signal对象,发现其中还有一个disconnect方法,对应实现取消信号关联,所以可以采用在django项目中的__init__.py文件中加入如下代码来实现保持数据库长连接的非非霸道操作

[python] view plaincopy
  1. from?django.core?import?signals??from?django.db?import?close_connection??
  2. ??#?取消信号关联,实现数据库长连接??
  3. signals.request_finished.disconnect(close_connection)??

然后在启动django项目以后就可以使数据库连接保持。好运吧!

热点排行