2024-09-26 22:54:27 发布
网友
Django模型或数据库后端中的AutoField是否有限制?在
我正在工作的Django项目可能会在某些数据库表中看到许多对象,在短时间内这些对象将超过40000个。在
我使用Sqlite进行开发,Postgresql用于生产。在
加上这个作为答案。Django将其映射到串行列,这意味着最大值在20亿范围内(确切地说是2147483647)。虽然对于大多数应用程序来说这不太可能是一个问题,但是如果您这样做了,您可以将类型改为bigint,这将使您不太可能到达64位int空间的末尾。在
正如其他人提到的使用int还是bigint,分别有2.147.483.648或{}值。在
int
bigint
2.147.483.648
如果你想超过这些数字,你可以做切分。 简而言之,分片是一种水平分区数据的方法,它将同一表的不同行存储在跨多个数据库的多个表中。在
Django有许多可用的切分库(例如django-sharding)
正在为Django 2.x添加新信息:
Django 2.x
Djangos^{}是一个^{}。IntegerField的文档说明:
IntegerField
Values from -2.147.483.648 to 2.147.483.647 are safe in all databases supported by Django.
-2.147.483.648
2.147.483.647
默认情况下,AutoField只使用正数,因此值可以从1到{}。在
AutoField
1
因为Django 1.10还有一个^{},它与^{}非常相似。 BigAutoField的文档说明:
Django 1.10
BigAutoField
A 64-bit integer [...] that is guaranteed to fit numbers from 1 to 9.223.372.036.854.775.807.
9.223.372.036.854.775.807
现在,文档并没有为这个字段显式地说明它,但是通过使用单词is garanteed to fit,我假设这适用于Django支持的所有数据库。在
is garanteed to fit
加上这个作为答案。Django将其映射到串行列,这意味着最大值在20亿范围内(确切地说是2147483647)。虽然对于大多数应用程序来说这不太可能是一个问题,但是如果您这样做了,您可以将类型改为bigint,这将使您不太可能到达64位int空间的末尾。在
正如其他人提到的使用}值。在
int
还是bigint
,分别有2.147.483.648
或{如果你想超过这些数字,你可以做切分。 简而言之,分片是一种水平分区数据的方法,它将同一表的不同行存储在跨多个数据库的多个表中。在
Django有许多可用的切分库(例如django-sharding)
正在为
Django 2.x
添加新信息:Djangos^{} 是一个^{} 。
IntegerField
的文档说明:默认情况下,}。在
AutoField
只使用正数,因此值可以从1
到{因为} ,它与^{} 非常相似。
Django 1.10
还有一个^{BigAutoField
的文档说明:现在,文档并没有为这个字段显式地说明它,但是通过使用单词
is garanteed to fit
,我假设这适用于Django支持的所有数据库。在相关问题 更多 >
编程相关推荐