加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

django pk vs id 有什么区别,用法是什么?如何使用?

发布时间:2020-12-15 17:14:34 所属栏目:大数据 来源:网络整理
导读:如果没有明确指定,默认情况下id是作为主键创建的字段的名称。? 而pk独立于实际主键。?即您不必关心主键字段是被称为id还是user_id或其他什么,使用pk,可以提高代码的一致性。 当一张表具有不同主键字段的模型时,id更有用。 实际上大部分表使用id和pk?并没

如果没有明确指定,默认情况下id是作为主键创建的字段的名称。?

而pk独立于实际主键。?即您不必关心主键字段是被称为id还是user_id或其他什么,使用pk,可以提高代码的一致性。

当一张表具有不同主键字段的模型时,id更有用。

实际上大部分表使用id和pk?并没有什么区别,但建议使用pk。

id与pk速度如何?

%timeit?obj.id
46?ns?±?0.187?ns?per?loop?(mean?±?std.?dev.?of?7?runs,?10000000?loops?each)
%timeit?obj.pk
347?ns?±?11.3?ns?per?loop?(mean?±?std.?dev.?of?7?runs,?1000000?loops?each)

经过测试发现,使用id的确是比pk快,这是因为meta在查找pk属性需要花的事件。不过请注意该单位是纳秒

pk在django的相关代码

def?_get_pk_val(self,?meta=None):
????meta?=?meta?or?self._meta
????return?getattr(self,?meta.pk.attname)

def?_set_pk_val(self,?value):
????return?setattr(self,?self._meta.pk.attname,?value)

pk?=?property(_get_pk_val,?_set_pk_val)

在网络请求中,使用pk会消耗三分之一微秒时间,可以忽略不计。

结论:

????使用id和pk没有什么区别,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读