Django - 如何有效地在数据库中以升序排序添加条目?

时间:2017-01-20 17:25:48

标签: django algorithm

我正在努力在Django中创建一个可以管理我的GRE单词和每个单词的其他细节的应用程序。因此,每当我向其中添加一个我学过的新单词时,它应该按字母顺序在数据库中插入单词及其详细信息。同时在检索时,我想要从数据库中提取特定单词的详细信息。

效率是主要问题。

我应该使用SQLite吗?我应该使用文件吗?我应该使用JSON对象来存储数据吗? 如果使用文件是最有效的,我应该实现什么数据结构? Django中是否有任何功能可以有效地执行此操作? 每个单词都有 - 意思,句子,图片,根。我该如何存储所有这些信息?

如果答案不是特定于Django并且谈论算法或数据库类型,那就没问题了。

1 个答案:

答案 0 :(得分:1)

我将从数据角度回答,因为这与django并不完全相关。

从你的问题看来,你有一个固定的标识符,每个"行":单词,这是一个字符串,和一组固定的属性。

我建议使用任何企业级RDBMS。在django的情况下,python生态系统中最受欢迎的是PostgreSQL。

对于排序,只需创建带有单词名称索引的表(如果您将单词用作主键,将自动为您完成),并使用django中的order_by检索记录。

以下是django field options(检查primary_key=True

的一些信息

这里是order_by order_by method

的信息

请记住,您还可以在模型的Meta类中设置排序。

对于您的搜索案例,您必须实现一个能够使用startswith查询数据库的端点。您可以查看示例here

示范模型:

class Word(models.Model):
    word = models.CharField(max_length=255, primary_key=True)
    roots = ...
    picture = ...

关于你的第二个问题:"这是否代价高昂?" 这真的取决于。用4000字我会说: NO

您可能希望在客户端中添加延迟以进行查询(例如"如果用户已输入并且500ms已通过w / o进一步输入") 如果我要向任何初级开发者提供一个好的建议,那么不要过早优化