Pet*_*tch 11 python django orm nosql amazon-dynamodb
我正在使用 Django MVC 框架开发 Web 应用程序、API 和后端。Django 的一个主要方面是它对模型的 ORM 的实现。这是一个非常好的 ORM。通常在使用 Django 时,人们会利用现有的接口将自己的 Django 模型映射到特定的 DBMS,例如 Postgres、MySQL 或 Oracle。
我有一些特定的需求,对性能和可扩展性的要求,所以我真的很想使用 AWS 的 Dynamo DB,因为它具有很高的成本效益、非常好的性能并且扩展性非常好。
虽然我认为 Django 允许人们为 DBMS 实现自己的接口,但如果有人愿意的话,在构建一个人的 Django 模型时能够使用现有的 DBMS 接口显然是有利的(如果存在的话)。
有人可以推荐使用 Django 模型接口,以便我可以在使用 AWS Dynamo DB 的 Django 中构建模型吗?
使用 MongoDB 怎么样?
Paw*_*Kam 12
正如其他人所写的,Django没有NoSQL DBMS支持,但有第三方包。
\nPynamoDB看起来不错,但我从未使用过它,所以我可以 \xe2\x80\x99t 推荐它。在我遇到的所有用例中,boto3 就足够了。设置非常简单,但问题在于细节(准确地说,是数据结构及其嵌套方式)。基本上,需要三个步骤:
\n最简单的例子:
\nfrom dynamodb_json import json_util as dynamodb_json\nfrom .models import YourModel\n\ndef get(request, partition_key):\n table = boto3.resource(\n \'dynamodb\',\n aws_access_key_id=...,\n aws_secret_access_key=...,\n region_name=...,\n ).Table(some_table_name)\n try:\n response = table.get_item(\n Key={partition_key: partition_key})\n except ClientError as e:\n logger.warning(e.response[\'Error\'][\'Message\'])\n else:\n data_str = response[\'Item\']\n _data_dict = dynamodb_json.loads(data_str)\n\n # Validation and modification of incoming data goes here.\n data_dict = validation_and_modification(_data_dict)\n # Then you can do whatever you need, for example:\n obj, created = YourModel.objects.update_or_create(**data_dict)\n ...\nRun Code Online (Sandbox Code Playgroud)\n创建、删除、列表和更新视图的示例可以在serverless repo中找到。
\n