我的数据库中有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()