【发布时间】:2015-05-26 08:05:38
【问题描述】:
测试代码:
1、 b = 1
2、 aa = Forum.objects.values('id')
3、 d = 2
4、 print aa[0]['id']
然后我用linux命令监控mysql执行:
tail -f /var/log/mysql/mysql.log
然后我逐行调试代码, 在第 2 行,监视器屏幕打印
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
在第 3 行,监视器屏幕打印
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
在第 4 行,监视器屏幕打印
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
25 Query SELECT `forum`.`id` FROM `forum` ORDER BY `forum`.`display_order` ASC LIMIT 21
为什么一个orm语句在mysql日志中执行了这么多次
【问题讨论】:
-
理论上没有理由认为第 3 行和第 4 行会触发查询。您确定您对日志文件的解释正确吗?我建议您安装
django-toolbar并在那里检查您的查询。 -
@Wtower 是的,使用 diango-toolbar 它只执行一次。可能是mysql日志中存在一些错误
-
我怀疑您的日志有误,我会说您的 shell 出于某种原因正在重新运行查询。