Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Django rest framework 3.6.2和python 3连接到Couchdb_Python_Django_Django Rest Framework_Couchdb - Fatal编程技术网

使用Django rest framework 3.6.2和python 3连接到Couchdb

使用Django rest framework 3.6.2和python 3连接到Couchdb,python,django,django-rest-framework,couchdb,Python,Django,Django Rest Framework,Couchdb,我正在研究Django Rest框架。我已经创建了一些API,并将数据存储在SQLLite中。 现在,我想将RESTAPI调用(基本上是crud应用程序)中的数据保存到CouchDB 我不知道如何通过Django rest框架连接到Coach db。我被困在这里,不知道如何使用Django rest api在Coach db中执行crud 下面是用django编写的用于添加ACCCONT的api之一。我想把这些数据保存在CouchDB中 models.py class BankAccount(m

我正在研究Django Rest框架。我已经创建了一些API,并将数据存储在SQLLite中。 现在,我想将RESTAPI调用(基本上是crud应用程序)中的数据保存到CouchDB

我不知道如何通过Django rest框架连接到Coach db。我被困在这里,不知道如何使用Django rest api在Coach db中执行crud

下面是用django编写的用于添加ACCCONT的api之一。我想把这些数据保存在CouchDB中

models.py

class BankAccount(models.Model):
    SAVINGS = 'saving'
    CURRENT = 'current'
    TYPE = (
      (SAVINGS,'Saving'),
      (CURRENT,'Current')
    )

    type = models.CharField(max_length=20, choices=TYPE, default=SAVINGS)
    bank_name = models.CharField(max_length=200)
    account_number =  models.IntegerField()
    balance = models.DecimalField(max_digits=10, decimal_places=2)

    def __str__(self):
        """returns the model as string."""

        return self.bank_name

    def __str__(self):
        """returns the model as string."""

        return self.type

serializers.py
class BankAccountSerializer(serializers.ModelSerializer):

    class Meta:
        model = BankAccount
        fields = '__all__'

views.py 

class BankAccountView(APIView):

    def get_object(self, pk):
        try:
            return BankAccount.objects.get(pk=pk)
        except BankAccount.DoesNotExist:
            raise Http404

    def get(self, request, format=None):
        accounts = BankAccount.objects.all()
        serializer = BankAccountSerializer(accounts, many=True)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = BankAccountSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def put(self, request, format=None):            
        data = json.loads(request.body)
        pk = data['id']
        action = data['action']
        if action == 'delete':
            return self.deleteItem(pk)
        account = self.get_object(pk)
        serializer = BankAccountSerializer(account, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    def deleteItem(self, pk):        
        account = self.get_object(pk)
        account.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

请帮助我,我被卡住了。

Django使用Python,并且有一个很好的维护,可能会帮助您将CouchDB与Python一起使用。

Joe Lennon的《Apress book》(pub 2009)中有一个示例应用程序,通过couchdbkit使用CouchDB作为Django应用程序的后端。遗憾的是,它是一个处于“管理方”模式的本地数据库,所以我还没有研究如何添加必要的参数来将其连接到Cloudant。使用Cloudant执行命令行python示例对我来说很好——有教程解释了这一点,并且它可以使用couchdbkit

在Joe的示例中,他在settings.py中留下一个最小的默认SQLite条目作为“虚拟”占位符


库中有一些线索,这让我认为我需要构造并传递一个URI字符串(可能作为settings.py中COUCHDB_DATABASES参数中的一个值),其内容类似于IBM的VCAP_服务环境变量,并将凭据作为键值对。我没有找到任何用法示例

除了SQLite之外,您还使用couchdb吗?或者您想用couchdb替换SQLite吗?我想用coach dbHi替换SQlLite。有人能帮我吗out@WillKeeling你知道吗?用CouchDB交换SQLite可能不是件小事,因为CouchDB不像SQLite那样是关系数据库,所以您可能会遇到概念上的不兼容。我没有将Django与CouchDB一起使用的任何直接经验,但它似乎有可用的,也有一些可用的。对不起,我帮不上什么忙了。