相关疑难解决方法(0)

记录所有sql查询

如何记录我的django应用程序执行的所有SQL查询?

我想记录所有内容,包括来自管理站点的SQL.我看到了这个问题常见问题解答,但我仍然无法弄清楚应该放在哪里

from django.db import connection
connection.queries
Run Code Online (Sandbox Code Playgroud)

将所有内容记录到一个文件中?

所以我的问题是 - 我应该怎么做一个文件(比如all-sql.log),其中记录所有SQL语句?

django

77
推荐指数
5
解决办法
5万
查看次数

如何在django中使用子查询?

我想获得每个客户的最新购买清单,按日期排序.

以下查询执行我想要的日期除外:

(Purchase.objects
         .all()
         .distinct('customer')
         .order_by('customer', '-date'))
Run Code Online (Sandbox Code Playgroud)

它会产生如下查询:

SELECT DISTINCT ON 
    "shop_purchase.customer_id" 
    "shop_purchase.id" 
    "shop_purchase.date" 
FROM "shop_purchase" 
ORDER BY "shop_purchase.customer_id" ASC, 
         "shop_purchase.date" DESC;
Run Code Online (Sandbox Code Playgroud)

我被迫使用customer_id作为第一个ORDER BY表达因为DISTINCT ON.

我想按日期排序,所以我真正需要的查询应该是这样的:

SELECT * FROM (
  SELECT DISTINCT ON 
      "shop_purchase.customer_id" 
      "shop_purchase.id" 
      "shop_purchase.date" 
  FROM "shop_purchase" 
  ORDER BY "shop_purchase.customer_id" ASC, 
           "shop_purchase.date" DESC;
  )
AS result 
ORDER BY date DESC;
Run Code Online (Sandbox Code Playgroud)

我不想使用python排序,因为我仍然需要页面限制查询.数据库中可能有数万行.

实际上它现在在python中排序,并且导致非常长的页面加载时间,所以这就是我试图解决这个问题的原因.

基本上我想要这样的东西/sf/answers/685727311/.是否可以用django查询集来表达它而不是编写原始SQL?

实际的模型和方法有几页长,但这里是上面的查询集所需的模型集.

class Customer(models.Model):
  user = models.OneToOneField(User)

class Purchase(models.Model):
  customer = models.ForeignKey(Customer)
  date = models.DateField(auto_now_add=True)
  item = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)

如果我有以下数据: …

django postgresql django-queryset

19
推荐指数
2
解决办法
7413
查看次数

内连接子查询 Django ORM 等效项

我有三个相关的表:

  • 模块
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| module_id   | int(11)     | NO   | PRI | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
  • 活动
+------------------+--------------------------+------+-----+---------+----------------+
| Field            | Type                     | Null | Key | Default | Extra          |
+------------------+--------------------------+------+-----+---------+----------------+
| event_id         | int(11)                  | NO   | PRI | NULL    | auto_increment |
| event_time       | datetime(4)              | NO   |     | NULL    |                |
| module_id        | int(11)                  | NO   | MUL | NULL …
Run Code Online (Sandbox Code Playgroud)

mysql django inner-join subquery django-orm

6
推荐指数
1
解决办法
3020
查看次数