脚本输入到数据库中的数据应给予冒号特殊处理

2024-10-01 15:40:50 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我编写了一个脚本,基本上从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)

下面是有趣的第一部分,数据库中的itemsmodelNursing实例的item值等于“Vitals:q4”。那么做这样的事情

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

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

更新:

实际上,我注意到,如果我只是进入管理部分,进入条目实例,然后简单地再次保存,那么查询就会工作。同样,为什么我必须转到条目实例并再次保存,以便查询工作


Tags: 文件实例字符串txt脚本数据库modelsas
1条回答
网友
1楼 · 发布于 2024-10-01 15:40:50

您的问题是line包含行的\n结尾。所以你的过滤器不是macthing "Vitals:q4",因为没有这个item的记录

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

所以你应该这么做

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

相关问题 更多 >

    热门问题