本文将带您了解关于如何通过djangorestapi将值插入到mysql数据库中的新内容,另外,我们还将为您提供关于1亿条数据如何分表100张到Mysql数据库中(PHP)、DjangoRestAPI
本文将带您了解关于如何通过 django restapi 将值插入到 mysql 数据库中的新内容,另外,我们还将为您提供关于1 亿条数据如何分表 100 张到 Mysql 数据库中(PHP)、Django RestAPI - AssertionError:期望返回`Response`、`HttpResponse`或`HttpStreamingResponse`、Django RestAPI - 仅允许使用 JWT 身份验证访问用户数据、Django RESTApi 使用 ForeignKey 作为过滤器仍然会产生错误的实用信息。
本文目录一览:- 如何通过 django restapi 将值插入到 mysql 数据库中
- 1 亿条数据如何分表 100 张到 Mysql 数据库中(PHP)
- Django RestAPI - AssertionError:期望返回`Response`、`HttpResponse`或`HttpStreamingResponse`
- Django RestAPI - 仅允许使用 JWT 身份验证访问用户数据
- Django RESTApi 使用 ForeignKey 作为过滤器仍然会产生错误
如何通过 django restapi 将值插入到 mysql 数据库中
如何解决如何通过 django restapi 将值插入到 mysql 数据库中
我最近遇到了一些麻烦, 我创建了 2 个表,分别是 User 和 Phones
models.py
TO_TIMESTAMP_TZ (timestampvalue,''YYYY-MM-DDHH:MI:sstZH:TZM'')
我想发送这样的帖子请求:
from django.db import models
class User(models.Model):
userid = models.AutoField(primary_key=True,default=None)
name = models.CharField(max_length= 100)
age = models.IntegerField()
class Meta:
db_table = ''user''
class Phones(models.Model):
phoneId = models.AutoField(primary_key=True,default=None)
userid = models.IntegerField(null=False)
numbers = models.CharField(max_length = 15,null=True)
phonesCountryCode = models.CharField(max_length=5,null=True)
class Meta:
db_table = ''phones''
可以将多个数据添加到两个数据库中。 我创建了一个视图并尝试添加这样的数据但失败了
views.py :
"User": [
{
"name": "abc","age": 100"
},{
"name": "pqr","age": 50
},{
"name": "xyz","age": 80
}
],"Phones": [
{
"numbers": "65452124","phonesCountryCode": "+93"
},{
"numbers": "45215124","phonesCountryCode": "+93"
}
]
finaly serializer.py
lass Updateall(APIView):
def post(self,request ):
userid = User.objects.latest(''userid'').userid
name = request.data.get(''name'')
age = request.data.get(''age'')
numbers = request.data.get(''numbers'')
phonesCountryCode = request.data.get(''phonesCountryCode'')
User_Serializer = UserSerializer(data={"name":name,"age":age})
if User_Serializer.is_valid(raise_exception=True):
User_Serializer.save()
Phone_Serializer = Phoneserializer(data={"userid":userid,"numbers":numbers,"phonesCountryCode":phonesCountryCode})
if Phone_Serializer.is_valid(raise_exception=True):
Phone_Serializer.save()
return Response({''status'': ''Success''})
请帮我将多个数据添加到数据库中
解决方法
class UpdateAll(ApiView):
data = request.data
user_data = data[''User'']
for user in user_data:
new_user = UserSerializer(data=user)
if new_user.is_valid():
new_user.save()
phone_data = data[''Phones'']
for phone in phone_data:
new_phone = PhoneSerializer(data=phone)
if new_phone.is_valid():
new_phone.save()
return Response({''status'':200,''message'':''success''})
1 亿条数据如何分表 100 张到 Mysql 数据库中(PHP)
这篇文章主要介绍了当数据量猛增的时候如何把一亿条数据分表 100 张到 Mysql 数据库中,需要的朋友可以参考下
下面通过创建 100 张表来演示下 1 亿条数据的分表过程,具体请看下文代码。
当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1 亿条数据,分 100 张表。具体实现过程如下:
首先创建 100 张表:
?
1 2 3 4 5 6 7 8 9 10 |
|
下面说一下我的分表规则,full_code 作为主键,我们对 full_code 做 hash
函数如下:
?
1 2 3 4 5 6 7 |
|
这样插入数据前通过 get_hash_table 获取数据存放的表名。
最后我们使用 merge 存储引擎来实现一张完整的 code 表
?
1 2 3 4 5 |
|
这样我们通过 select * from code 就可以得到所有的 full_code 数据了。
以上介绍就是本文的全部内容,希望对大家有所帮助。
Django RestAPI - AssertionError:期望返回`Response`、`HttpResponse`或`HttpStreamingResponse`
GET
方法应始终返回 HttpResponse 对象,您可以使用 JsonResponse 对象,它是 HttpResponse 的子类,有助于创建 JSON 编码的响应。
试试这个
from django.http import JsonResponse
class SymbolInformation(APIView):
''''''
Returns the Symbol Information
''''''
def get(self,request,symbolname=''NIFTY50''):
# Capturing Inputs in Appropriate Cases
symbolname = symbolname.upper()
(companyname,symbol,tablename,close,change,returns,upperband,lowerband,has_fno,weekly_expiry,weekly_future,lotsize,isIndex,stepvalue) = get_symbol_details(symbolname=symbolname)
data = SymbolInformationSerializer()
print(companyname,stepvalue)
data = {''companyname'': companyname,''symbol'': symbol,''tablename'': tablename,''close'': close,''change'': change,''returns'': returns,''upperband'': upperband,''lowerband'': lowerband,''has_fno'': has_fno,''weekly_expiry'': weekly_expiry,''weekly_future'': weekly_future,''lotsize'': lotsize,''isIndex'': isIndex,''stepvalue'': stepvalue}
print(data)
output = SymbolInformationSerializer(data)
print(output.data)
return JsonResponse(output.data)
Django RestAPI - 仅允许使用 JWT 身份验证访问用户数据
如何解决Django RestAPI - 仅允许使用 JWT 身份验证访问用户数据
我有以下 API:
型号:
class Todo(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=20,default="")
text = models.TextField(max_length=450,default="")
done = models.BooleanField(default=False)
查看:
class TodoView(viewsets.ModelViewSet):
serializer_class = TodoSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
id = self.request.query_params.get("id")
queryset = Todo.objects.filter(owner__id=id)
return queryset
序列化器:
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = ("id","owner","name","text","done")
我使用 rest_framework_simplejwt
作为我的令牌,并使用以下路径来接收我的令牌:
path("api/token/",TokenObtainPairView.as_view(),name="token_obtain_pair"),
这是令牌:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjE5Mjg4ODAwLCJqdGkiOiJhY2E4MjM5ZGMyZjA0NGE5YWE4NzM3NWZjMDc2NWQ0YSIsInVzZXJfaWQiOjF9.xJ4s971XE0c9iX0Ar1HQSE84u_LbDKLL4imswYsk2U8
当我在 jwt.io 上解码时,我可以看到它包含用户 ID:
{
"token_type": "access","exp": 1619288800,"jti": "aca8239dc2f044a9aa87375fc0765d4a","user_id": 1
}
在我的请求标头中没有令牌的 http://localhost:8000/todos/?id=1
上的请求不起作用(很好!),但有了令牌,我也可以访问 http://localhost:8000/todos/?id=2
,这当然是不受欢迎的。我只想访问 http://localhost:8000/todos/?id=1
(来自有效负载的相应 user_id
)
我该怎么做?
解决方法
更改您的 get_queryset
方法:
def get_queryset(self):
reque Todo.objects.filter(owner=self.request.user)
现在任何人都只能访问自己的 Todo 记录。
网址应该是这样的http://localhost:8000/todos/<id>
额外:
不要从客户那里拿走 owner
。而是自己设置。
如下图。
class TodoSerializer(serializers.ModelSerializer):
owner = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Todo
fields = ("id","owner","name","text","done")
Django RESTApi 使用 ForeignKey 作为过滤器仍然会产生错误
如何解决Django RESTApi 使用 ForeignKey 作为过滤器仍然会产生错误
我想我更接近我的 API 问题,但我仍然收到以下错误:
TypeError: Field ''id'' expected a number but got <built-in function id>.
型号:
from django.contrib.auth.models import User
class Todos(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=20,default="")
text = models.TextField(max_length=450,default="")
done = models.BooleanField(default=False)
序列化器:
class TodosSerializer(serializers.ModelSerializer):
class Meta:
model = Todos
fields = ("id","owner","name","text","done")
查看:
class TodosView(viewsets.ModelViewSet):
queryset = Todos.objects.filter(owner__id=id)
serializer_class = TodosSerializer
网址:
router = routers.DefaultRouter()
router.register("todos/<int:id>",views.TodosView)
urlpatterns = [path("",include(router.urls))]
我想获取单个用户的所有待办事项。我在这里做错了什么?
编辑:
queryset = Todos.objects.filter(owner__id=1)
这实际上不会产生错误。我的网址似乎有问题:
http://localhost:8000/todos/%3Cint:id%3E/
我们今天的关于如何通过 django restapi 将值插入到 mysql 数据库中的分享已经告一段落,感谢您的关注,如果您想了解更多关于1 亿条数据如何分表 100 张到 Mysql 数据库中(PHP)、Django RestAPI - AssertionError:期望返回`Response`、`HttpResponse`或`HttpStreamingResponse`、Django RestAPI - 仅允许使用 JWT 身份验证访问用户数据、Django RESTApi 使用 ForeignKey 作为过滤器仍然会产生错误的相关信息,请在本站查询。
本文标签: