Skip to main content
 首页 » 编程设计

python之django 教程第 1 部分(p.choice_set.all() 以相反的顺序返回)

2024年08月29日27birdshome

https://docs.djangoproject.com/en/1.5/intro/tutorial01/

我正在学习 Django 教程,在第 1 部分接近尾声时调用了 p.choice_set.all(),我以相反的顺序显示。

例如,我得到:只是再次黑客攻击,天空,不多 而不是:不多,天空,只是再次黑客攻击

知道为什么我得到相反的顺序吗?我按照教程指示的顺序输入它。

我正在运行 PostgreSQL。

请您参考如下方法:

如果您没有明确执行 order_by(),则无法保证返回结果的顺序。

不确定 PostgreSQL,但对于 MySQL,在实践中,如果您仅根据某些索引列选择行的子集,它将按该索引排序,但如果您选择每一行,它'我们将使用表扫描并按照结果在磁盘上的存储顺序返回结果。

关于磁盘顺序,如果您曾经删除过一行,那么当您下次插入一行时它会尝试填充该行使用的空间,所以如果您有...

ID   Name 
1    Bob 
2    Fred 
3    Jim 

...然后删除第一行,然后添加新行,您会...

ID   Name 
4    Jeff 
2    Fred 
3    Jim 

...此时 SELECT * FROM my_table 将按 4、2、3 的顺序返回它们,而 SELECT * FROM my_table WHERE id > 1将(可能)以 2、3、4 的顺序返回它们。