Django项目中使用DNA信息CSV作为数据库的有效方法



我正在考虑以下Django项目的设计。在这个项目中,我有一个CSV文件(4列,500行(,我不知道如何将其作为数据库处理。CSV看起来是这样的数据包含500个代码,其中每个代码有3个分数:f1、f2、f3。网站目标:1。以获得用户对哪些特征列数据感兴趣以及以何种顺序感兴趣的输入。例如:2Xf21Xf1(只有3个特征列:f1、f2、f3和"代码"列(2.生成代码的输出,该代码的输出包含所需次序中的所需特征的最高等级代码。

因此,对于我们的输入:2Xf21Xf1,输出将是以下字符串:[#1 rankning code f2 column] [#2 ranking code f2 column] [#1 rankning code f1 column]

我正在考虑创建一个包含3列的数据库:f1、f2、f3,其中每列中都有按降序排列的代码,所以如果用户想要f1中的5个代码,我会取前5个。

我的问题是:如何以一种简单的方式处理数据库,以便正确使用Django工具进行开发和维护(而不是寻求效率(?

我的第一个方向是使用MySql和django模型来映射数据。我将感谢任何关于学习Django的想法或提示,因为我正在使用官方文档,该文档提供了"池"网站的示例,而这不是我所需要的。

谢谢!

以下是我在理解您的问题时如何设计模型。

class Field(models.Model):
# This model represents each of the individual fX fields, so f1, f2, f3
name = models.CharField(max_length=15, unique=True)

class Code(models.Model):
# This model represents the values in the first column, code.
name = models.CharField(max_length=255, unique=True)

class FieldData(models.Model):
code = models.ForeignKey(Code, on_delete=models.CASCADE)
field = models.ForeignKey(Field, on_delete=models.CASCADE)
value = models.IntegerField()
class Meta:
unique_together = [('code', 'field')]

然后当你处理CSV时,你会:

  • 读取标题行,并对"代码"后面的每一列使用Field.objects.get_or_create
  • 读取正文,为行中的每个Field列创建Code实例和FieldData实例

如果需要FieldData实例的历史记录,则必须更改模型设计。

感谢您的回答!使用这个模型可能是映射csv数据的好方法!我有3个问题:1( 实际解析CSV以逐行添加这些对象的简单方法是什么?

2( 为什么以下模型不更简单(同时知道字段不会有任何变化(:

class Code(models.model):
code = models.CharField(max_length=30, unique=True)
f1_score = models.IntegerField()
f2_score = models.IntegerField()
f3_score = models.IntegerField()

3( 您将如何每次从每个字段中提取排名最高的代码?例如f1 上的5个最佳排名

最新更新