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

标签 django algorithm

我正在使用 Django 开发一个应用程序,它可以管理我的 GRE 单词和每个单词的其他详细信息。所以每当我向它添加一个我学到的新单词时,它应该按字母顺序将单词及其详细信息插入数据库中。此外,在检索时,我希望从数据库中提取要提取的特定单词的详细信息。

效率是主要问题。

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

如果答案不是特定于 Django 的并且谈论算法或数据库类型,那也没关系。

最佳答案

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

从您的问题看来,每个“行”都有一个固定的标识符:单词(一个字符串)和一组固定的属性。

我建议使用任何企业级 RDBMS。就 Django 而言,Python 生态系统中最受欢迎的是 PostgreSQL。

至于排序,只需创建一个包含单词名称索引的表(如果您使用单词作为主键,这将自动为您完成),并使用 order_by 检索您的记录在 Django 中。

这是关于 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

您可能想在客户端中添加延迟以无论如何执行查询(例如“如果用户已经输入并且已经过了 500 毫秒而没有进一步输入”) 如果我要给任何新手开发者一个好的建议,那就是不要过早优化

关于Django - 如何有效地在数据库中按升序添加条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41769216/

相关文章:

python - 将 Router 与 Django REST Framework 一起使用时,如何让 APIViews 和 ViewSets 显示在 API Root 上?

Django:如何设置 jQuery-Raty 的静态设置?

python - 连接到 MongoDB 副本集 - pymongo

python - 在 Django 中哪里构建数据库对象(不使用 shell)?

django - RequestFactory & reverse with pk(必须用对象 pk 或 slug 调用)

algorithm - 合并两个完全二叉树的最大堆

algorithm - 和相等的子集

c# - 映射 URL 或本地路径的数据结构

algorithm - 平台游戏 - 一种逼真的寻路算法

javascript - PCFG(NLP)中的内外算法