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没有什么区别, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |