首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sqlite中删除行,但是值没有被删除,大小也在变大。

问从sqlite中删除行,但是值没有被删除,大小也在变大。
EN

Stack Overflow用户
提问于 2020-10-03 16:05:12
回答 1查看 37关注 0票数 0

我正在收集twitter流,并将它存储在sqlite db.Since中,流正在到来,数据库越来越大,我执行了一个命令来删除比minute.But更老的tweet,这里只有tweet,而且数据库正在获得bigger.Please帮助,因为我对sqlite还不熟悉。

这是密码

代码语言:javascript
复制
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,tweet,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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-03 16:20:24

您正在测试IN子查询,这反过来又有一个子查询,并且您抱怨这种复杂的方法不起作用,in在您的“自1970年以来的秒”时间戳中没有找到匹配项。

好的。你的规格比那简单得多,你说你想要

删除超过一分钟的tweet的命令

小菜一碟。跟着那个英语句子,把它转换成SQL:

代码语言:javascript
复制
DELETE FROM sentiment WHERE created_at < strftime('%s', 'now') - 60;

当前时间减60秒是一分钟前,WHERE子句要求的行要比这更早。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64186232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档