python—如何在数据库中存储大量的键/代码django公司

iqxoj9l9  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(297)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

12个月前关门了。
改进这个问题
让我解释一下。我用python,django建立了一个网站。我现在遇到的一个问题是我不知道该怎么做。网站上的每个用户都会上传大量的基本上是密钥/代码到网站上,这些密钥/代码将链接到他们的帐户。它将在每个用户数千。我可以想象,为每一个键/代码排一行根本就没有效率。有没有办法存储列表或类似的东西?如果我在100个用户之后有一行代码/键,那么它将上升到数十万行。

hm2xizp9

hm2xizp91#

数据库运行良好,有数百万条记录和查找。根据我的经验,postgresql在批量更新方面遇到了一些问题(用一个查询更新的数百万条记录中的10000条有点慢)
你可以用这种模型

from django.db import models

class UserData(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    key = models.CharField(max_length=50)
    value = models.CharField(max_length=50)

或者可以使用带有jsonfield的表

from django.contrib.postgres.fields import JSONField
from django.db import models

class UserData(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    data = JSONField()

在查询json对象时,您将得到一个json对象,并像在视图中使用字典一样使用它,然后使用db进行更新。

q3qa4bjr

q3qa4bjr2#

是的,数十万行没有错,这就是RDBMS的好处!

class Code(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
    code = models.CharField(max_length=..., unique=True)

是一个完美的模型。然后可以通过反向管理器访问用户代码 user.code_set .
如果不希望代码在系统中全局唯一,请删除 unique=True 约束
如果希望每个用户的代码都是唯一的,请添加 class Meta: unique_together = (('user', 'code'),)

相关问题