是否有在Django模型中的下拉列表AutoField或数据库后端的限制?
Django的项目我的工作可能会看到大量的对象,其中将超过40000很短的时间量内的某些数据库表。
我使用的开发和PostgreSQL生产sqlite的。
是否有在Django模型中的下拉列表AutoField或数据库后端的限制?
Django的项目我的工作可能会看到大量的对象,其中将超过40000很短的时间量内的某些数据库表。
我使用的开发和PostgreSQL生产sqlite的。
添加此作为一个答案。 Django的映射这个串行列这意味着该最大值在2十亿范围(2,147,483,647是精确的)。 虽然这是不太可能对于大多数应用程序的问题,如果你这样做,你可以改变的类型成为一个BIGINT代替,这将使它极不可能的,你永远不会达到64位int空间的结束。
添加新的信息Django 2.x
:
Django的AutoField
是IntegerField
。 对于文档IntegerField
说:
从价值观
-2.147.483.648
到2.147.483.647
是Django支持的所有数据库的安全。
AutoField
每默认情况下只使用正数,因此它们的值可以去从1
到2.147.483.647
。
由于Django 1.10
还有一个BigAutoField
,这是非常相似的BigIntegerField
。 对于文档BigAutoField
说:
一个64位的整数[...]这是保证适合号码从
1
至9.223.372.036.854.775.807
。
现在,文档不说,它明确了这一领域,但使用的话is garanteed to fit
,我认为适用于Django支持的所有数据库。
正如其他人所说是否使用int
或bigint
,分别您有2.147.483.648
或9.223.372.036.854.775.808
值。
如果你想超过这些数字,你可以做分片。 总之,分片是通过在多个数据库之间的多个表存储在同一个表的不同行水平分区数据的方式。
有Django的许多可用的分片库(如Django的分片 )