django连接两次到数据库

时间:2011-04-14 15:32:20

标签: python mysql django

我在django中创建了一个非常简单的应用程序,其中我有一个模型,当请求到来时,我基本上从该模型中过滤对象,然后在模板中渲染它们。它似乎工作正常,但当我去检查我的数据库日志。我发现django在每个请求上连接两次以检索有关请求会话的信息。任何人都可以帮助我解释为什么会这样?见下面是示例日志

110414 18:28:29     8 Connect   root@localhost on project1_dev
            8 Query SET NAMES utf8
            8 Query set autocommit=0
            8 Query SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = '7af6952f847471091a83ee9382bb858d'  AND `django_session`.`expire_date` > '2011-04-14 10:28:29' )
            8 Query SELECT `category_main`.`id`, `category_main`.`slug`, `category_main`.`is_active`, `category_main`.`site_id`, `django_site`.`id`, `django_site`.`domain`, `django_site`.`name` FROM `category_main` INNER JOIN `category_main_i18n` ON (`category_main`.`id` = `category_main_i18n`.`main_id`) INNER JOIN `django_site` ON (`category_main`.`site_id` = `django_site`.`id`) WHERE (`category_main_i18n`.`language` = 'en'  AND `category_main`.`is_active` = 1 )
            8 Quit  
            9 Connect   root@localhost on project1_dev
            9 Query SET NAMES utf8
            9 Query set autocommit=0
            9 Query SELECT `django_session`.`session_key`, `django_session`.`session_data`, `django_session`.`expire_date` FROM `django_session` WHERE (`django_session`.`session_key` = '7af6952f847471091a83ee9382bb858d'  AND `django_session`.`expire_date` > '2011-04-14 10:28:29' )
            9 Quit

2 个答案:

答案 0 :(得分:0)

您是否有机会使用django提供媒体文件?这会产生额外的请求,从而产生额外的查询。

“会话”查询是针对每个请求完成的,这就是为什么我认为您的请求可能比您想象的要多。

答案 1 :(得分:0)

我经历了完全相同的事情。在我的情况下,事实证明这是一个要求favicon的原因。它没有显示在Chrome网络控制台中,也没有显示在manage.py的访问日志中。我通过简单地为我的网站添加了facicon.ico来解决它。

我也尝试过调试工具栏,但SQL查询没有出现,可能是因为它们没有与视图关联。