如何解决从sqlite db删除行仍不会删除值且大小会变大
我正在收集twitter流并将其存储在sqlite db中。由于流即将来并且数据库越来越大,我执行了一条命令来删除超过一分钟的tweet。但是这些tweet仅存在于数据库中越来越大。由于我是sqlite的新手,请提供帮助
这是代码
class listener(StreamListener):
def on_data(self,data):
try:
data = json.loads(data)
tweet = unidecode(data['text'])
text = preprocess(tweet)
score = predict(text)['score']
created_at = data['created_at']
c.execute('INSERT INTO sentiment (created_at,tweet,score) VALUES (?,?,?)',(created_at,score))
conn.commit()
c.execute('DELETE FROM sentiment WHERE created_at IN(SELECT created_at FROM(SELECT
created_at,strftime("%s","now") - strftime("%s",created_at) AS passed_time FROM
sentiment WHERE passed_time >=60))')
conn.commit()
except Exception as e:
print(str(e))
解决方法
您正在测试IN子查询,后者又有一个子查询, 而且您抱怨这种复杂的方法行不通, IN找不到匹配项 在您的“自1970年以来的秒数”时间戳中。
好的。您说的要比 简单得多
删除早于一分钟的推文的命令
一块蛋糕。只需按照该英语句子并将其变成SQL:
DELETE FROM sentiment WHERE created_at < strftime('%s','now') - 60;
当前时间减去六十秒是一分钟前, 并且WHERE子句要求的行早于该行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。