Python 如何在用户输入其他单词之前刷新数据库数据

Python 如何在用户输入其他单词之前刷新数据库数据,python,django,linux,ubuntu-10.04,Python,Django,Linux,Ubuntu 10.04,我使用django cms创建了一个名为“搜索”的应用程序,它基本上从用户那里获取一个单词,在10个xml文档中搜索,并返回每个xml文件中该单词出现的频率。这些数据存储在我使用sqlite3数据库创建的表中 现在我的问题是,每当用户输入单词时,表中以前的数据都应该被删除,而不使用delete查询,而是通过代码片段。因为这可以通过在python交互式shell上键入delete query轻松完成 但我希望一旦用户被引导到显示计数的结果页面,如果他再次输入另一个单词,之前的数据应该被删除。 嘿,

我使用django cms创建了一个名为“搜索”的应用程序,它基本上从用户那里获取一个单词,在10个xml文档中搜索,并返回每个xml文件中该单词出现的频率。这些数据存储在我使用sqlite3数据库创建的表中

现在我的问题是,每当用户输入单词时,表中以前的数据都应该被删除,而不使用delete查询,而是通过代码片段。因为这可以通过在python交互式shell上键入delete query轻松完成

但我希望一旦用户被引导到显示计数的结果页面,如果他再次输入另一个单词,之前的数据应该被删除。 嘿,这是我的views.py代码:

# Create your views here.
#!/usr/bin/python 

from django.template import loader, RequestContext, Context
from django.http import HttpResponse
from search.models import Keywords
from django.shortcuts import render_to_response as rr

def front_page(request):

    if request.method == 'POST' :
        from skey import find_root_tags, count, sorting_list
        str1 = request.POST['word'] 
        str1 = str1.encode('utf-8')
        list = []
        path = '/home/pooja/Desktop/'
        fo = open("/home/pooja/Desktop/xml.txt","r")

        for i in range(count.__len__()):
            file = fo.readline()
            file = file.rstrip('\n')            
            find_root_tags(path+file,str1,i)    

            list.append((file,count[i]))

        sorting_list(list)

        for name, count1 in list:
            s = Keywords(file_name=name,frequency_count=count1)# saving my data in table here .
            s.save()

        fo.close()
        list1 = Keywords.objects.all()
        t = loader.get_template('search/results.html')
        c = Context({'list1':list1,})

        return HttpResponse(t.render(c))

    else :  
        str1 = ''
        template = loader.get_template('search/front_page.html')
        c = RequestContext(request)
        response = template.render(c)
        return HttpResponse(response)
my models.py文件:

from django.db import models

class Keywords(models.Model):
    file_name = models.CharField(primary_key=True, max_length=100)
    frequency_count = models.IntegerField()

    def __unicode__(self):
        return self.file_name

请帮忙,我是django的新手。

看来你得看看。您可以使用signal django.db.models.signals.pre_save在保存新数据之前删除数据。可能是 理解它可能很有用

更新:

第一种方式:不确定关键字是保存结果的表。如果是保存结果的表,那么按照Filip Dupanović的建议,请在保存数据库表中搜索结果的代码之前运行views.py中的
Keywords.objects.all().delete()

第二种方式:正如我之前告诉过你的,我们也可以通过使用信号来实现这一点。例如,假设models.py中的我的模型如下:

class Name(models.Model):
    name = models.CharField(max_length=200)
from django.db import models
from django.db.models import signals
from django.db.models.signals import pre_save

class Name(models.Model):
    name = models.CharField(max_length=200)

def delete_previous_records(**kwargs):
    try:
        Name.objects.all().delete()
    except:
        return False

pre_save.connect(delete_previous_records)
现在,在表中保存任何新名称之前,如果要删除所有以前的条目,可以执行以下操作:

class Name(models.Model):
    name = models.CharField(max_length=200)
from django.db import models
from django.db.models import signals
from django.db.models.signals import pre_save

class Name(models.Model):
    name = models.CharField(max_length=200)

def delete_previous_records(**kwargs):
    try:
        Name.objects.all().delete()
    except:
        return False

pre_save.connect(delete_previous_records)
在将数据保存到views.py中的for循环上方添加以下代码:

try:
    Keywords.objects.all().delete() #Deleting all previous records 
except: 
    return False
#your for loop starts here
for name, count1 in list:
    s = Keywords(file_name=name,frequency_count=count1)

只需执行类似于
Match.objects.delete()
的操作,即可在开始编译新结果之前擦除视图中以前的所有结果。

您所说的“不使用删除查询,而是通过代码片段”是什么意思?@Jonas:正如我所提到的,我们可以运行交互式shell并在那里键入sql查询,也就是说,我可以键入Query DELETE*from table_name,而不是这样做,我想通过在需要编写的地方,在views.py或models.py中编写一些代码来实现这一点,但它应该能够解决我在问题中提到的目的请在这方面帮助我任何人请。。。。。。。。。。。。。。。。。。它是urgent@POOJAGUPTA:请查看我的最新答案。如果这仍然不起作用,请共享您的models.py。另外,分享您在表中保存数据的代码。注意:嘿,我已经更新了我的帖子,我已经包含了我的视图。py您能告诉我,我应该把您的解决方案放在哪里吗?它不起作用,它给出了错误:ImportError:没有名为new_testmodels.mymodel的模块,我已经更新了我的帖子,请注意,在views.py中添加了一条注释,并共享了my models.py代码。@POOJAGUPTA:Oops我的错。请删除那一行。查看我的更新代码。我删除了那一行,因为我觉得它无关紧要,但仍然没有任何效果,任何其他的可能solution@POOJAGUPTA:您能否在保存表格数据的位置共享代码。我已经发布了我的models.py文件代码,请参见上文,在views.py文件代码中,我甚至通过注释提到了存储数据的位置。