首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写Python查询并导入它们?

如何编写Python查询并导入它们?
EN

Stack Overflow用户
提问于 2016-12-20 07:33:30
回答 1查看 247关注 0票数 2

数据:

代码语言:javascript
复制
{
  "Fruit": "Pomegranate",
  "District": "Nasik",
  "Taluka": "Nasik",
  "Revenue circle": "Nasik",
  "Sum Insured": 28000,
  "Area": 1200,
  "Farmer": 183
}

{
  "Fruit": "Pomegranate",
  "District": "Jalna",
  "Taluka": "Jalna",
  "Revenue circle": "Jalna",
  "Sum Insured": 28000,
  "Area": 120,
  "Farmer": 13
}

{
  "Fruit": "Guava",
  "District": "Pune",
  "Taluka": "Haveli",
  "Revenue circle": "Uralikanchan",
  "Sum Insured": 50000,
  "Area": 10,
  "Farmer": 100
}

{
  "Fruit": "Guava",
  "District": "Nasik",
  "Taluka": "Girnare",
  "Revenue circle": "Girnare",
  "Sum Insured": 50000,
  "Area": 75,
  "Farmer": 90
}

{
  "Fruit": "Banana",
  "District": "Nanded",
  "Taluka": "Nandurbar",
  "Revenue circle": "NandedBK",
  "Sum Insured": 5000,
  "Area": 2260,
  "Farmer": 342
}

{
  "Fruit": "Banana",
  "District": "Jalgaon",
  "Taluka": "Bhadgaon",
  "Revenue circle": "Bhadgaon",
  "Sum Insured": 5000,
  "Area": 220,
  "Farmer": 265
}

我想要写所有类型的组合查询,如果有人只想要水果的信息--即番石榴--那么输出将仅仅是番石榴的精确数据。

另外,如果有人只想要水果的信息,即香蕉和番石榴,那么输出将是香蕉和番石榴的精确数据。

如果水果等于香蕉

代码语言:javascript
复制
  output will be data for Banana

如果水果等于番石榴

代码语言:javascript
复制
  output will be data for Guava

如果水果等于香蕉和番石榴

代码语言:javascript
复制
  output will be data for Banana and Guava

另外,如果有人只想要地区的信息,也就是Nasik,那么输出将是Nasik地区的精确数据。对“地区”的质疑

如果地区等于Nasik

代码语言:javascript
复制
  output will be data for Nasik District

如果区与南德相等

代码语言:javascript
复制
 output will be data for Nanded District

同样,还有对"Revenue_circle、Farmer等“的查询。

我知道如何使用find在mongoshell中编写这个查询。

db.collections.find({"District":"Nasik"})等..。

但是我想在python脚本中编写查询。

你能帮我解决这个问题吗?有什么暗示吗?

我试着用Models.py文件编写

代码语言:javascript
复制
from django.contrib.auth.models import User   
from django.db import models    
from django.db.models import Q

class Wbcis(models.Model):

    Fruit = models.CharField(max_length=50)

    District = models.CharField(max_length=50)

    Taluka = models.CharField(max_length=50)

    Revenue_circle = models.CharField(max_length=50)

    Sum_Insured = models.FloatField()

    Area = models.FloatField()

    Farmer = models.IntegerField()


    def __str__(self):

        return self.Fruit

    def save(self, *args, **kwargs):

        super().save(*args, **kwargs)

    class Meta:

      verbose_name_plural = 'wbcis'


from models import Wbcis
Guava =Wbcis.objects.filter(Q(Fruit='Guava'))    
print Guava    
Banana= Wbcis.objects.filter(Q(Fruit='Banana'))    
print Banana        
Pomegranate= Wbcis.objects.filter(Q(Fruit='Pomegranate'))    
print Pomegranate
Guava_Banana=Wbcis.objects.filter(Q(Fruit='Guava')&Q(Fruit='Banana'))  
print Guava_Banana
Guava_Pomegranate=Wbcis.objects.filter(Q(Fruit='Guava')&Q(Fruit='Pomegranate'))
print Guava_Pomegranate

我试着用Views.py

代码语言:javascript
复制
from rest_framework.viewsets import ModelViewSet
from WBCIS.serializers import WbcisSerializer
from WBCIS.models import Wbcis 
from rest_framework.filters import SearchFilter
from django.db.models import Q


class WbcisViewSet(ModelViewSet):

    queryset = Wbcis.objects.all()

    serializer_class = WbcisSerializer

    filter_backends=[SearchFilter]

    search_fields=['Fruit','District','Sum_Insured','Area','Farmer','Taluka','Revenue_circle','id']   

    def get_queryset(self, *args, **kwargs):

        queryset_list =Wbcis.objects.all()

        queryset_list1 =Wbcis.objects.all()

        query =self.request.GET.get("Fruit")

        query1=self.request.GET.get("District")

        query2=self.request.GET.get("Taluka")


        if query and query1:

            queryset_list = queryset_list.filter(
            Q(Fruit__icontains=query)
            |Q(Distirct__icontains=query1)
            )

            return queryset_list

        elif query1:

            queryset_list1 = queryset_list.filter(
            Q(District__icontains=query1)
            )  

            return queryset_list1

        elif query:

            queryset_list1 = queryset_list.filter(
            Q(Fruit__icontains=query)
            )  

            return queryset_list1

        elif query and query2:

            queryset_list2 = queryset_list.filter(
            Q(Fruit__icontains=query)&
            Q(Taluka__icontains=query2)
            )  

            return queryset_list2

        return Wbcis.objects.all()

这样做对吗?或者需要修改models.py和views.py文件?

EN

回答 1

Stack Overflow用户

发布于 2016-12-20 07:39:50

您将希望在django中创建一个模型,以便您可以使用django的ORM轻松地访问数据。以下是关于Django模型的一些信息

在上述情况下,您的模型如下:

代码语言:javascript
复制
class Item(models.Model):
    Fruit = models.CharField(max_length=60)
    District = models.CharField(max_length=60)
    Taluka = models.CharField(max_length=60)
    RevenueCircle = models.CharField(max_length=60)
    SumInsured = models.IntegerField()
    Area = models.IntegerField()
    Farmer = models.IntegerField()

然后您就可以执行如下的查询:

代码语言:javascript
复制
from models import Item
guava_items = Item.objects.filter(fruit='Guava')
print guava_items
# Out: [<guava item>, <guava item>, ...]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41236996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档