脚本将数据输入数据库 - 冒号应该给予特殊处理

时间:2017-03-22 05:52:08

标签: python django python-2.7 django-models

所以我编写了一个脚本,它基本上从txt文件中读取数据并填充此模型。

class modelNursing(models.Model):
    item = models.CharField(max_length=250, default="")

这是一个简单的脚本(看起来像这样)。本质上,txt文件在每一行包含一个字符串,该脚本提取每个行字符串并将该字符串作为条目输入到数据库中。

def PopulateNursing(request):
    with open('../content.txt') as fp:
        try:
            for line in fp:
                try:
                    modelNursing.objects.create(item=line)
                except Exception as e:
                    print str(e)
        except Exception as e:
            print str(e)

现在,这是有趣的部分,其中一个项目modelNursing实例在数据库中的项目值等于“Vitals:q4”。所以做这样的事情

nursing = modelNursing.objects.filter(item="Vitals:q4")

应该返回一行,但不幸的是它没有。所以我进入管理界面,仔细检查条目是否真的存在,是的,它就在那里。 然后我注意到我是否从管理界面删除了字符串Vitals:q4中的列,然后再次添加它然后保存查询工作。有关为什么会发生这种情况的任何建议?是否有可能自动化脚本可能会搞砸冒号插入或其他东西。为什么我必须删除每个条目中的列并重新插入它然后保存它。任何意见,将不胜感激。我很困惑。

更新

实际上我注意到,如果我只是进入管理部分并进入条目实例并且只是再次保存查询工作。为什么我必须转到条目实例并再次保存以使查询起作用?

1 个答案:

答案 0 :(得分:2)

您的问题是line包含\n行的结尾。因此,您的过滤器不会"Vitals:q4",因为此item没有记录。

nursing = modelNursing.objects.filter(item="Vitals:q4\n")

所以你应该做

modelNursing.objects.create(item=line.strip())