django id整数限制

时间:2012-08-27 23:36:57

标签: python django sqlite django-postgresql

Django模型或数据库后端中的AutoField是否有限制?

我正在研究的Django项目可能会在某些数据库表中看到很多对象,这些对象会在很短的时间内超过40000。

我正在使用Sqlite for dev和Postgresql进行制作。

3 个答案:

答案 0 :(得分:5)

添加此作为答案。 Django将其映射到串行列,这意味着最大值在20亿范围内(准确地说是2,147,483,647)。虽然对于大多数应用程序来说这不太可能是一个问题,但如果你这样做,你可以改变类型而不是变成bigint,这将使你很可能无法达到64位int空间的末尾。

答案 1 :(得分:4)

Django 2.x添加新信息:


Djangos AutoFieldIntegerFieldIntegerField的文档说:

  

-2.147.483.6482.147.483.647的值在Django支持的所有数据库中都是安全的。

AutoField默认情况下仅使用正数,因此值可以从12.147.483.647


Django 1.10起,还有一个BigAutoField,与BigIntegerField非常相似。 BigAutoField的文档说:

  

保证可以容纳从19.223.372.036.854.775.807的数字的64位整数[...]。

现在,文档并未在此字段中明确说明,但使用is garanteed to fit一词,我认为这适用于Django支持的所有数据库。

答案 2 :(得分:0)

正如其他人提到的那样,分别使用intbigint2.147.483.648还是9.223.372.036.854.775.808

如果您认为超过这些数字,可以进行分片。 简而言之,分片是通过在多个数据库的多个表中存储同一表的不同行来水平划分数据的一种方法。

有许多适用于Django的分片库(例如django-sharding