`
san_yun
  • 浏览: 2663905 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Django实现数据库长连接

 
阅读更多

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

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

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

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

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

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

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

 

 

ps: 经测试发现和gevent一起工作,connection会无限制增长

 

 

分享到:
评论

相关推荐

    django实现用户的登录注册连接后台数据库完成主页的搭建

    3. 数据库连接:Django通过`django.db`模块与数据库进行交互,通常使用SQLite作为默认数据库,但也可配置为MySQL、PostgreSQL等其他数据库。在settings.py文件中,我们需要设置`DATABASES`配置项来指定数据库引擎、...

    django 数据库连接模块解析及简单长连接改造方法

    在进行django数据库连接模块解析及简单长连接改造方法的讨论前,首先需了解django框架中数据库连接管理的基本原理。Django使用ORM(对象关系映射)来与数据库进行交互,这允许开发者使用Python代码来操作数据库,而...

    详解多线程Django程序耗尽数据库连接的问题

    具体到实现层面,可以在工作线程完成一个任务后调用Django的数据库连接管理函数来关闭连接。Django提供了关闭当前线程所有数据库连接的函数connections.close_all(),可以通过ThreadPoolExecutor中的回调函数来实现...

    Django引用ztree实现数据库表导入树状目录

    在本例中,我们需要从数据库中读取数据表,这可以通过Django的ORM(对象关系映射)系统实现,它允许我们以Python对象的方式操作数据库。 3. ZTree插件: ZTree是一款基于JavaScript的树形插件,适用于Web前端展示...

    django 连接数据库、上传文件

    通过以上步骤,你就能够在Django项目中成功地连接MySQL数据库并实现文件上传功能。记住,安全性和性能优化在实际生产环境中非常重要,例如,使用合适的权限设置、限制文件类型、处理大文件上传等。

    Django读取Mysql数据并显示在前端的实例

    总结一下,这个实例展示了如何在Django中连接MySQL数据库,创建模型,同步数据库,定义视图,设置URL路由,以及在模板中显示数据。这个过程是Django进行数据驱动开发的基础,可以帮助你构建复杂的数据展示和交互功能...

    python使用Django库向mysql数据库插入数据

    本教程将详细介绍如何使用Django与MySQL协同工作,实现数据的插入操作。 首先,确保你已经安装了Python、Django和MySQL的相关库。Python的安装是基础,Django可以通过pip来安装:`pip install django`。对于MySQL,...

    django第一个项目连接mysql数据库实现注册登录

    以上就是使用Django连接MySQL数据库并实现用户注册登录的基本步骤。在这个过程中,你不仅学会了Django的基本操作,还掌握了数据库配置、模型创建、视图处理和模板设计等核心概念。随着项目的深入,你还可以添加更多...

    PythonDjango支持像PostgresCitus这样的分布式多租户数据库

    为了在Django项目中使用Citus,我们需要安装`citus` PostgreSQL扩展,并在Django的数据库配置中指定Citus连接。配置文件可能如下所示: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends....

    Django数据库内省工具通过数据表名就可以动态创建一个即时可用的Djangomodels对象

    接着,我们可以使用`connections`来获取数据库连接,然后调用`introspection`模块中的方法来获取表的信息: ```python db_name = 'default' # 这里替换为你的数据库名 connection = connections[db_name] ...

    基于Django的数据库监控系统.zip

    此外,为了实现数据库监控,可能还使用了如SQLAlchemy(Python的ORM工具)或者直接使用Django的ORM进行数据库交互,可能集成了一些第三方库,如Prometheus或Grafana用于监控指标的收集和展示,或者使用Celery进行...

    Django切换MySQL数据库.rar

    在设置好数据库连接后,你需要确保你的环境安装了支持MySQL的Django后端。Django本身并不包含MySQL的后端,所以你需要安装`mysqlclient`或`pymysql`库。可以使用pip进行安装: ```bash pip install mysqlclient # ...

    python电脑控制手机端应用Django源码数据库演示.zip

    这个项目是基于Python的Web框架Django实现的一个电脑远程控制手机端应用的系统。它展示了如何利用Django的强大功能构建一个跨平台的控制接口,使用户能够在电脑上操作手机上的应用程序。Django是一个高级的、快速...

    基于python+Django的数据库监控系统.zip

    在Python和Django的项目中,可能使用了如psycopg2(PostgreSQL)、pyodbc(ODBC兼容数据库)、mysql-connector-python(MySQL)等库来实现数据库连接和操作。 【毕业设计】 毕业设计是高等教育中的一项重要任务,...

    Django连接数据库并实现读写分离过程解析

    接下来,我们将详细探讨如何在Django项目中实现数据库的连接、配置以及读写分离。 首先,配置Django项目连接数据库是读写分离的第一步。Django在settings.py文件中通过DATABASES配置项来设置数据库连接。默认情况下...

    基于Django实现的物流管理系统源码.zip

    【标题】基于Django实现的物流管理系统源码 在IT领域,Django是一个非常流行的Python Web框架,它遵循模型-视图-控制器(MVC)架构模式,用于快速开发高效、安全且易于维护的网站。这个"基于Django实现的物流管理...

    Django Mysql的安装与连接

    接下来,配置完毕后,需要测试Django项目中的数据库连接是否成功。这通常可以通过Django的交互式命令行工具来实现。开发者只需在命令行中执行相关的Python代码,如果执行过程没有出现异常错误,那么就可以初步判断...

    django博客项目(数据库使用mysql)+带后台

    在这个项目中,我们将深入探讨如何使用 Python 和 Django 实现一个基于 MySQL 的博客平台,并探讨相关的技术细节。 首先,我们需要安装 Django 框架和 MySQL 驱动。Django 是 Python 的一个 Web 开发框架,它遵循 ...

    django+python实现的web入门程序-注册登录功能-sqlite3数据库

    【标题】"django+python实现的web入门程序-注册登录功能-sqlite3数据库"是一个基于Python的Django框架和SQLite3数据库构建的初级Web应用程序。这个程序旨在帮助初学者理解如何在Django中实现用户注册和登录的核心...

    python建站django框架与数据库交互的简单学习代码

    通过以上步骤,你可以实现Python建站过程中Django框架与SQLite数据库的交互。在实际项目中,你可能需要处理更复杂的业务逻辑,如分页、过滤、排序等,但这些基本操作是Django数据库交互的基础。记得在学习过程中不断...

Global site tag (gtag.js) - Google Analytics