我正在努力在Django中创建一个可以管理我的GRE单词和每个单词的其他细节的应用程序。因此,每当我向其中添加一个我学过的新单词时,它应该按字母顺序在数据库中插入单词及其详细信息。同时在检索时,我想要从数据库中提取特定单词的详细信息。
效率是主要问题。
我应该使用SQLite吗?我应该使用文件吗?我应该使用JSON对象来存储数据吗? 如果使用文件是最有效的,我应该实现什么数据结构? Django中是否有任何功能可以有效地执行此操作? 每个单词都有 - 意思,句子,图片,根。我该如何存储所有这些信息?
如果答案不是特定于Django并且谈论算法或数据库类型,那就没问题了。
答案 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进一步输入") 如果我要向任何初级开发者提供一个好的建议,那么不要过早优化