【Django】ORM操作MySQL数据库遇到的一些问题

关于查询操作:

1.exact和iexact

exact相当于=   iexact相当于like(但是这里的like和数据库的不一样,没有给后面条件加上%%所以这里like和=的作用相似)

article=Article.objects.filter(id__exact=1)
print(article.query)

这里的query用于查看article翻译成的SQL,但是注意,如果查询的时候用get方法,然后使用query会报错
'Article' object has no attribute 'query'
,需要在使用filter的时候这个query才能正常:只能在queryset可以用

SELECT `article_article`.`id`, `article_article`.`title`, `article_article`.`context`, `article_article`.`category_id`, `article_article`.`author_id` FROM `article_article` WHERE `article_article`.`id` = 1

从上面结果可知,exact翻译成=

若为article=Article.objects.filter(id__iexact=1)则翻译结果为:

SELECT `article_article`.`id`, `article_article`.`title`, `article_article`.`context`, `article_article`.`category_id`, `article_article`.`author_id` FROM `article_article` WHERE `article_article`.`id` LIKE 1

可见iexact翻译成like,但是这里注意like后面的条件没有%所以也相当于精确匹配

一般情况下,精确匹配直接用=就可以了,不需要写__exact或者__iexact

猜你喜欢

转载自www.cnblogs.com/HAHACHANGEFROMNOW/p/9510258.html