删除记录的Sqlite触发器需要太长时间

时间:2016-06-13 19:28:06

标签: python python-2.7 sqlite

我的数据库中有50,000条记录。我保持了触发器,当它超过50,000条记录,即50,001条记录时,我将删除前49000条记录并仅保留最后1000条记录。

触发器由python脚本设置,数据库的插入也由python脚本完成。

这里的问题是通过触发器将行删除到DB中需要太长时间......

我听说在python中做的比在命令行慢得多,当我通过命令行执行它时,它花了我10到15秒,并通过python,当它插入50,001th记录并尝试删除以前的49,000条记录,程序没有完成任务。

我等了半个小时,它仍然在执行。我该怎么办?

PS:触发器非常好。

    sql = '''CREATE TRIGGER autodelete AFTER INSERT ON syslog
           WHEN (SELECT COUNT(*) FROM syslog) > '''+self.size_limit+'''
           BEGIN
           DELETE  from syslog where time < ( select time from syslog limit -1 offset '''+str(self.co)+''');
       INSERT INTO syslog (loglevel, logcode,logmessage) SELECT level loglevel, code  logcode,message logmessage FROM syslog_default_codes where ROWID=1;
           END'''

这是我的触发器,这是我的插入

        self.cur = self.con.cursor()
        self.cur.execute('INSERT INTO syslog (loglevel, logcode, logmessage) values (?, ?, ?)', (loglevel, logcode, logmessage))
        self.con.commit()

0 个答案:

没有答案