简体   繁体   English

Django原始SQL查询

[英]Django raw sql query

I have a this model: 我有一个这样的模型:

class Document(models.Model): 
    data = models.TextField() 
    users = models.ManyToManyField(User)

How would you convert the following query for the model above to raw sql? 您如何将上述模型的以下查询转换为原始sql?

Document.objects.annotate(num_users=Count(users))

I need to switch this to raw sql because there is a bug in django when using MySql that makes annotate very slow. 我需要将其切换到原始sql,因为在使用MySql时django中存在错误,这会使注释变得非常慢。

But I'm not sure how to handle the many to many field in raw sql.. 但是我不确定如何处理原始sql中的多对多字段。

Document.objects.raw('SELECT ...')

将Django查询转换为SQL的最简单方法是简单地查看Django生成的SQL: 如何查看Django正在运行的原始SQL查询?

you can get corresponding query the way mentioned below: 您可以通过以下方式获取相应的查询:

queryset = Document.objects.annotate(num_users=Count(users))  
sql_query = queryset.query
print(sql_query)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM