【问题标题】:SQL query generated by django F expressiondjango F表达式生成的SQL查询
【发布时间】:2019-05-03 02:24:23
【问题描述】:

有人知道django在使用F表达式时生成的实际查询吗?

对于文档中提到的示例,生成的查询将是什么:https://docs.djangoproject.com/en/2.1/ref/models/expressions/#f-expressions

from django.db.models import F

reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()

我尝试查看使用以下命令生成的查询:

from django.db import connection
logging.info('[----- DEBUG -----] Query -1: %s', connection.queries[-1])
logging.info('[----- DEBUG -----] Query -2: %s', connection.queries[-2])
logging.info('[----- DEBUG -----] Query -3: %s', connection.queries[-3])

但我没有在我的模型/表格上看到任何查询。

有人知道怎么解决吗?

【问题讨论】:

    标签: python django python-2.7 django-models django-orm


    【解决方案1】:

    查询应该在connection.queries 中 - 我刚刚测试发现它在那里。对于 MySQL 和 Postgresql,发送到数据库的查询看起来像这样:

    UPDATE "myapp_reporters" 
    SET "stories_filed" = ("myapp_reporters"."stories_filed" + 1) 
    WHERE "myapp_reporters"."id" = 123
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2018-09-08
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      相关资源
      最近更新 更多